
如何用R來(lái)定制個(gè)性化PPT
ReporteRs包可以創(chuàng)建word,ppt,html文檔。它可以格式化R的輸出:如可編輯的矢量圖,復(fù)雜的表格報(bào)告功能,企業(yè)模板文檔的重用(.docx和.pptx)。它是一個(gè)很好的自動(dòng)化報(bào)告工具,并且不需要你安裝微軟的任何產(chǎn)品。本文演示的是如何用它來(lái)制作PPT文檔。
入門(mén)
創(chuàng)建一個(gè)pptx對(duì)象
通過(guò)pptx函數(shù)創(chuàng)建的一個(gè)R對(duì)象可以表示一個(gè)PPT文檔。它包含兩個(gè)參數(shù):標(biāo)題和模板文件。如果未指定,模板文件在包目錄下是一個(gè)空文檔。
每當(dāng)創(chuàng)建一個(gè)pptx對(duì)象的時(shí)候,你就可以使用一個(gè)模板文件。這個(gè)文件是從內(nèi)存中復(fù)制過(guò)來(lái)的,并且副本可以通過(guò)R輸出為一個(gè)文檔。模板文件提供了可用的格式和幻燈片板式。
將R的輸出結(jié)果發(fā)送到一個(gè)對(duì)象
接下來(lái),創(chuàng)建pptx文件的組成部分。
在將R的輸出發(fā)送到一個(gè)文檔(或幻燈片)之前,必須添加一個(gè)幻燈片。通過(guò)函數(shù)addSlide可以實(shí)現(xiàn)。
在添加幻燈片的時(shí)候,需要選定一個(gè)布局。然后添加文本,表格,圖形和其它組成部分。
將對(duì)象寫(xiě)入到一個(gè)文件中
最后,使用函數(shù)writeDoc將對(duì)象寫(xiě)入到后綴為.pptx的文件中。
示例
下面我們通過(guò)一個(gè)帶有注解的R腳本來(lái)做演示:
模板,版式和樣式
pptx函數(shù)可以通過(guò)"pptx"模板文件創(chuàng)建一個(gè)文檔。
如果沒(méi)有提供,可以使用一個(gè)空文檔(在包目錄下的templates文件中可以找到)
ReporteRs使用PPT文件作為模板。這個(gè)模板是一個(gè)最原始的PPT文檔,所有的幻燈片布局,外形(占位符)和樣式來(lái)自于:
模板中可用的幻燈片版式模板中自定義好的設(shè)計(jì),模板格式和外形(模板中的占位符)
ppt模板的內(nèi)容不會(huì)被刪除,以便在現(xiàn)有的演示文稿中添加內(nèi)容,而不用再?gòu)?fù)制粘貼。
如果需要除了PPT內(nèi)置的幻燈片母版版式,可以在你的PPT演示文稿中添加版式并做自定義。要添加自己的版式,只需在PPT中按如下操作即可:
1.切換到幻燈片母版視圖
2.插入版式
3.插入你想要增加到新版式中的占位符。根據(jù)需要包含的內(nèi)容移動(dòng)并調(diào)整它們的大小。
4.可以對(duì)新的占位符做些設(shè)置(如:修改背景顏色,字體等)
5.保存并關(guān)閉模板
6.通過(guò)pptx函數(shù)中參數(shù)template所指定的模板文件名創(chuàng)建一個(gè)pptx對(duì)象。
添加內(nèi)容
添加幻燈片
利用addSlide函數(shù)可以在pptx對(duì)象中添加一個(gè)幻燈片??捎玫男螤顢?shù)根據(jù)所選的版式通過(guò)R輸出來(lái)填充。例如,版式"Title and Content"只能接收一個(gè)R輸出,"Two Content"可以接收兩個(gè)R輸出。
如果你需要一個(gè)新的版式,在PPT中創(chuàng)建它。
當(dāng)添加一個(gè)R輸出的時(shí)候,如果沒(méi)有指定位置和大小,R輸出會(huì)采用被定義的模板版式中的位置和尺寸。如果你不喜歡模板中的模型位置屬性,可以強(qiáng)制改變大小和位置。
將R的輸出結(jié)果發(fā)送到幻燈片
接下來(lái),創(chuàng)建幻燈片的組成部分。
在幻燈片中添加文本,表格,圖形和其它組成部分。可用的函數(shù)見(jiàn)如下函數(shù)列表。
如果現(xiàn)在的幻燈片沒(méi)有剩余空間或者是你想添加其它內(nèi)容,可以強(qiáng)制設(shè)定模型的大小和位置。具體可參考幾個(gè)關(guān)鍵的函數(shù)和參數(shù)
函數(shù)列表
下面這些函數(shù)只能用于輸出格式為pptx的文檔:
添加標(biāo)題:addTitle
添加表格:addFlexTable-見(jiàn)FlexTable和addFlexTable
添加圖形:見(jiàn)addPlot
添加外部圖像:見(jiàn)addImage
添加文本段落:addPagraph
添加語(yǔ)法高亮的R代碼:見(jiàn)addRScript
添加幻燈片:addSlide(見(jiàn)"幾個(gè)關(guān)鍵的函數(shù)和參數(shù)")
將pptx對(duì)象寫(xiě)入PPT文檔:見(jiàn)writeDoc
添加日期:addDate(見(jiàn)下述"幾個(gè)特殊函數(shù)")
添加腳注:addFooter(見(jiàn)下述"幾個(gè)特殊函數(shù)")
添加頁(yè)數(shù):addPageNumber(見(jiàn)下述"幾個(gè)特殊函數(shù)")
幾個(gè)關(guān)鍵的函數(shù)的參數(shù)
addSlide函數(shù)
函數(shù)addSlide可以添加一個(gè)幻燈片到pptx對(duì)象。參數(shù)slide.layout指定新建幻燈片的版式設(shè)計(jì)。
slide.layouts函數(shù)
模板中包含了可用的版式?;脽羝陌媸礁拍钤赗eporteRs中非常重要。
內(nèi)容取決于所選擇的版式。當(dāng)添加的幻燈片版式為"Title and Content"時(shí),幻燈片只包含兩個(gè)部分:標(biāo)題和內(nèi)容。
外形(或占位符)的大部分格式都已經(jīng)設(shè)置好了:圖形的大小由版式中的外形尺寸指定好了,默認(rèn)字體和段落樣式也由外形的屬性值指定。
slide.layouts返回幻燈片版式名稱(chēng)。用addSlide函數(shù)添加一個(gè)幻燈片的時(shí)候可能需要核對(duì)下有哪些版式可用。
檢查幻燈片版式
通過(guò)slide.layouts函數(shù)的可選參數(shù)layout獲取版式的設(shè)計(jì)圖。
這里,幻燈片可用接收如下形狀:標(biāo)題,四個(gè)內(nèi)容(圖形,表格,段落),日期和幻燈片數(shù)。
設(shè)置大小和位置
寬度,高度和輸出位置在PPT模板給定的時(shí)候就通過(guò)外形屬性值設(shè)定好了。當(dāng)我們?cè)诨脽羝刑砑觾?nèi)容的時(shí)候,ReporteRs會(huì)在當(dāng)前幻燈片中讀取下一個(gè)可用外形的屬性值。你可以指定一些特定輸出(表格,文本,圖形和外部圖像)的外形位置和尺寸 如果沒(méi)有設(shè)定offx,offy,width,heigh這些參數(shù)。位置的尺寸會(huì)通過(guò)幻燈片的下一個(gè)可用形狀中的width和heigh默認(rèn)設(shè)定好。 如果指定這些參數(shù),可以得到新的外形位置和尺寸。這樣做可以在幻燈片沒(méi)有更多剩余的空間時(shí)添加新的內(nèi)容。
以下R腳本可以生成
幾個(gè)特殊函數(shù)
日期
利用addDate函數(shù)可以在幻燈片中增加日期。它的外形通過(guò)模板文檔中的日期外形屬性值設(shè)定。
頁(yè)數(shù)
利用函數(shù)addPageNumber可以在幻燈片中添加幻燈片的頁(yè)數(shù)。同樣,它的外形通過(guò)模板文檔中的頁(yè)數(shù)外形屬性值設(shè)定。
頁(yè)腳
函數(shù)addFooter可以實(shí)現(xiàn)在幻燈片的頁(yè)腳處添加注解。同樣,通過(guò)模板文件默認(rèn)設(shè)定。
副標(biāo)題
函數(shù)addSubtitle實(shí)現(xiàn)在幻燈片中添加副標(biāo)題。外形由模板默認(rèn)設(shè)定。
副標(biāo)題的外形只存在類(lèi)型為"Title Slide"的幻燈片。
更換幻燈片
通過(guò)設(shè)定addSlide中的參數(shù)bookmark可以實(shí)現(xiàn)幻燈片的替換。
注:在本文中遇到的坑跟大家分享下。
1.前面已經(jīng)提到創(chuàng)建一個(gè)模板有兩種方法。方法一,mydoc = pptx()通過(guò)調(diào)用包目錄下templates文件夾中的EMPTY_DOC.pptx作為模板。方法二,自己在當(dāng)前工作目錄下新建一個(gè)ppt文檔作為模板。如:我在工作目錄下新建了一個(gè)名為"PP_example.pptx"文檔,通過(guò)mydoc = pptx( title = 'title', template = 'pp_example.pptx' )調(diào)用這個(gè)模板。這兩種方法會(huì)有些區(qū)別:i)版式
采用方法一
采用方法二
所以,如果用的是方法二調(diào)用的模板,在做幻燈片替換的時(shí)候做下中文設(shè)置即可:mydoc = addSlide( mydoc, slide.layout = '標(biāo)題和內(nèi)容', bookmark = 3 )。但這里有一個(gè)問(wèn)題就是無(wú)法插入圖形,出現(xiàn)如下錯(cuò)誤(如果有小伙伴解決了這個(gè)問(wèn)題歡迎在下面評(píng)論中留言):
但文本,表格等可以插入。但通過(guò)方法一得到一個(gè)ppt文檔,再把它作為模板后就可以插入圖形了。
2.在做幻燈片替換的過(guò)程中,將pptx對(duì)象writeDoc()到ppt文檔的時(shí)候ppt需先關(guān)閉。
3.用方法二作為模板的時(shí)候,需先在工作目錄下新建一個(gè)ppt文檔,否則提示文件不存在。
完整案例
下面的代碼展示了可以用在pptx對(duì)象上的一些最有用的函數(shù)。
數(shù)據(jù)分析咨詢(xún)請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實(shí)戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無(wú)論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢(xún)效率:打破 “拆分必慢” 的認(rèn)知誤區(qū) 在 MySQL 數(shù)據(jù)庫(kù)管理中,“大表” 始終是性能優(yōu)化繞不開(kāi)的話(huà)題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫(kù)表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動(dòng)態(tài)隨機(jī)一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開(kāi)始提取前,需先判斷 TIF 文件的類(lèi)型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價(jià)值的專(zhuān)業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫(kù)表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實(shí)戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫(kù))處理 Excel 數(shù)據(jù)時(shí),“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗(yàn)與 t 檢驗(yàn):差異、適用場(chǎng)景與實(shí)踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)領(lǐng)域,假設(shè)檢驗(yàn)是驗(yàn)證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專(zhuān)業(yè)操盤(pán)手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計(jì)劃中 rows 數(shù)量的準(zhǔn)確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計(jì)劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對(duì)象的 text 與 content:區(qū)別、場(chǎng)景與實(shí)踐指南 在 Python 進(jìn)行 HTTP 網(wǎng)絡(luò)請(qǐng)求開(kāi)發(fā)時(shí)(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價(jià)值的核心操盤(pán)手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫(kù)表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請(qǐng)求工具對(duì)比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請(qǐng)求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長(zhǎng)浮點(diǎn)數(shù)據(jù)的科學(xué)計(jì)數(shù)法問(wèn)題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長(zhǎng)浮點(diǎn)數(shù)據(jù)時(shí)的科學(xué)計(jì)數(shù)法問(wèn)題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價(jià)值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運(yùn)營(yíng)問(wèn)題、提升執(zhí)行效率的核心手段,其價(jià)值 ...
2025-09-12用 SQL 驗(yàn)證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實(shí)戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過(guò)程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計(jì)” 與 “用戶(hù)體驗(yàn) ...
2025-09-11塔吉特百貨孕婦營(yíng)銷(xiāo)案例:數(shù)據(jù)驅(qū)動(dòng)下的精準(zhǔn)零售革命與啟示 在零售行業(yè) “流量紅利見(jiàn)頂” 的當(dāng)下,精準(zhǔn)營(yíng)銷(xiāo)成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價(jià)值 在數(shù)據(jù)驅(qū)動(dòng)決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類(lèi)分析:從操作實(shí)踐到業(yè)務(wù)價(jià)值挖掘 在數(shù)據(jù)分析場(chǎng)景中,聚類(lèi)分析作為 “無(wú)監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計(jì)模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價(jià)值導(dǎo)向 統(tǒng)計(jì)模型作為數(shù)據(jù)分析的核心工具,并非簡(jiǎn)單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10