ReporteRs包可以创建word,ppt,html文档。它可以格式化R的输出:如可编辑的矢量图,复杂的表格报告功能,企业模板文档的重用(.docx和.pptx)。它是一个很好的自动化报告工具,并且不需要你安装微软的任何产品。本文演示的是如何用它来制作PPT文档。
 
入门
创建一个pptx对象
 
通过pptx函数创建的一个R对象可以表示一个PPT文档。它包含两个参数:标题和模板文件。如果未指定,模板文件在包目录下是一个空文档。
 
每当创建一个pptx对象的时候,你就可以使用一个模板文件。这个文件是从内存中复制过来的,并且副本可以通过R输出为一个文档。模板文件提供了可用的格式和幻灯片板式。
 
将R的输出结果发送到一个对象
 
接下来,创建pptx文件的组成部分。
 
在将R的输出发送到一个文档(或幻灯片)之前,必须添加一个幻灯片。通过函数addSlide可以实现。
 
在添加幻灯片的时候,需要选定一个布局。然后添加文本,表格,图形和其它组成部分。
 
将对象写入到一个文件中
 
最后,使用函数writeDoc将对象写入到后缀为.pptx的文件中。
 
示例
下面我们通过一个带有注解的R脚本来做演示:

模板,版式和样式
 
pptx函数可以通过"pptx"模板文件创建一个文档。
 
如果没有提供,可以使用一个空文档(在包目录下的templates文件中可以找到)

ReporteRs使用PPT文件作为模板。这个模板是一个最原始的PPT文档,所有的幻灯片布局,外形(占位符)和样式来自于:
 
模板中可用的幻灯片版式
 
模板中自定义好的设计,模板格式和外形(模板中的占位符)
 
ppt模板的内容不会被删除,以便在现有的演示文稿中添加内容,而不用再复制粘贴。
 
如果需要除了PPT内置的幻灯片母版版式,可以在你的PPT演示文稿中添加版式并做自定义。要添加自己的版式,只需在PPT中按如下操作即可:
 
1.切换到幻灯片母版视图
 
2.插入版式
 
3.插入你想要增加到新版式中的占位符。根据需要包含的内容移动并调整它们的大小。
 
4.可以对新的占位符做些设置(如:修改背景颜色,字体等)
 
5.保存并关闭模板
 
6.通过pptx函数中参数template所指定的模板文件名创建一个pptx对象。
 
添加内容
添加幻灯片
 
利用addSlide函数可以在pptx对象中添加一个幻灯片。可用的形状数根据所选的版式通过R输出来填充。例如,版式"Title and Content"只能接收一个R输出,"Two Content"可以接收两个R输出。
 
如果你需要一个新的版式,在PPT中创建它。
 
当添加一个R输出的时候,如果没有指定位置和大小,R输出会采用被定义的模板版式中的位置和尺寸。如果你不喜欢模板中的模型位置属性,可以强制改变大小和位置。
 
将R的输出结果发送到幻灯片
 
接下来,创建幻灯片的组成部分。
 
在幻灯片中添加文本,表格,图形和其它组成部分。可用的函数见如下函数列表。
 
如果现在的幻灯片没有剩余空间或者是你想添加其它内容,可以强制设定模型的大小和位置。具体可参考几个关键的函数和参数
 
函数列表
下面这些函数只能用于输出格式为pptx的文档:
 
添加标题:addTitle
添加表格:addFlexTable-见FlexTable和addFlexTable
 
添加图形:见addPlot
添加外部图像:见addImage
 
添加文本段落:addPagraph
添加语法高亮的R代码:见addRScript
 
添加幻灯片:addSlide(见"几个关键的函数和参数")
 
将pptx对象写入PPT文档:见writeDoc
 
添加日期:addDate(见下述"几个特殊函数")
 
添加脚注:addFooter(见下述"几个特殊函数")
 
添加页数:addPageNumber(见下述"几个特殊函数")
 
几个关键的函数的参数
 
addSlide函数
函数addSlide可以添加一个幻灯片到pptx对象。参数slide.layout指定新建幻灯片的版式设计。

slide.layouts函数
模板中包含了可用的版式。幻灯片的版式概念在ReporteRs中非常重要。
 
内容取决于所选择的版式。当添加的幻灯片版式为"Title and Content"时,幻灯片只包含两个部分:标题和内容。
 
外形(或占位符)的大部分格式都已经设置好了:图形的大小由版式中的外形尺寸指定好了,默认字体和段落样式也由外形的属性值指定。
 
slide.layouts返回幻灯片版式名称。用addSlide函数添加一个幻灯片的时候可能需要核对下有哪些版式可用。

检查幻灯片版式
 
通过slide.layouts函数的可选参数layout获取版式的设计图。

这里,幻灯片可用接收如下形状:标题,四个内容(图形,表格,段落),日期和幻灯片数。
 
设置大小和位置
宽度,高度和输出位置在PPT模板给定的时候就通过外形属性值设定好了。当我们在幻灯片中添加内容的时候,ReporteRs会在当前幻灯片中读取下一个可用外形的属性值。你可以指定一些特定输出(表格,文本,图形和外部图像)的外形位置和尺寸 如果没有设定offx,offy,width,heigh这些参数。位置的尺寸会通过幻灯片的下一个可用形状中的width和heigh默认设定好。 如果指定这些参数,可以得到新的外形位置和尺寸。这样做可以在幻灯片没有更多剩余的空间时添加新的内容。
 
以下R脚本可以生成

几个特殊函数
 
日期
利用addDate函数可以在幻灯片中增加日期。它的外形通过模板文档中的日期外形属性值设定。

页数
利用函数addPageNumber可以在幻灯片中添加幻灯片的页数。同样,它的外形通过模板文档中的页数外形属性值设定。

页脚
函数addFooter可以实现在幻灯片的页脚处添加注解。同样,通过模板文件默认设定。

副标题
函数addSubtitle实现在幻灯片中添加副标题。外形由模板默认设定。
 
副标题的外形只存在类型为"Title Slide"的幻灯片。

更换幻灯片
通过设定addSlide中的参数bookmark可以实现幻灯片的替换。

注:在本文中遇到的坑跟大家分享下。
 
1.前面已经提到创建一个模板有两种方法。方法一,mydoc = pptx()通过调用包目录下templates文件夹中的EMPTY_DOC.pptx作为模板。方法二,自己在当前工作目录下新建一个ppt文档作为模板。如:我在工作目录下新建了一个名为"PP_example.pptx"文档,通过mydoc = pptx( title = 'title', template = 'pp_example.pptx' )调用这个模板。这两种方法会有些区别:i)版式
 
采用方法一

采用方法二

所以,如果用的是方法二调用的模板,在做幻灯片替换的时候做下中文设置即可:mydoc = addSlide( mydoc, slide.layout = '标题和内容', bookmark = 3 )。但这里有一个问题就是无法插入图形,出现如下错误(如果有小伙伴解决了这个问题欢迎在下面评论中留言):

但文本,表格等可以插入。但通过方法一得到一个ppt文档,再把它作为模板后就可以插入图形了。
 
2.在做幻灯片替换的过程中,将pptx对象writeDoc()到ppt文档的时候ppt需先关闭。
 
3.用方法二作为模板的时候,需先在工作目录下新建一个ppt文档,否则提示文件不存在。
 
完整案例
下面的代码展示了可以用在pptx对象上的一些最有用的函数。

关于ReporteRs的更多信息请参考http://davidgohel.github.io/ReporteRs/index.html

如何用R来定制个性化PPT的更多相关文章

  1. 一篇文章教你如何用R进行数据挖掘

    一篇文章教你如何用R进行数据挖掘 引言 R是一种广泛用于数据分析和统计计算的强大语言,于上世纪90年代开始发展起来.得益于全世界众多 爱好者的无尽努力,大家继而开发出了一种基于R但优于R基本文本编辑器 ...

  2. Taro 2.2 全面插件化,支持拓展和定制个性化功能

    自 2.2 开始,Taro 引入了插件化机制,允许开发者通过编写插件的方式来为 Taro 拓展更多功能或者为自身业务定制个性化功能,欢迎大家进行尝试,共同讨论~ 当前版本 2.2.1 官方插件 Tar ...

  3. 定制个性化码表技术 ibus

    在不同用户的工作环境中,都会根据各自使用的字符集的不同,而需要定制优化各自的输入法码表,例如,在GB18030中的大量汉字,或许因为输入法码表的老旧,而难于利用自己熟悉的“五笔”方法快速录入,同样,需 ...

  4. 用Qt写软件系列四:定制个性化系统托盘菜单

    导读 一款流行的软件,往往会在功能渐趋完善的时候,通过改善交互界面来提高用户体验.毕竟,就算再牛逼的产品,躲藏在糟糕的用户界面之后总会让用户心生不满.界面设计需综合考虑审美学.心理学.设计学等多因素, ...

  5. 定制个性化的FlashPaper生成的文件

    1:找到已安装FlashPaper目录下的子目录Interface下的文件DefaultViewer2.swf,在此swf文件的基础上实现自己的修改. 2:利用swf反编译工具,这里推荐 硕思闪客精灵 ...

  6. 如何用R来处理数据表的长宽转换(图文详解)

    不多说,直接上干货! 很多地方都需用到这个知识点,比如Tableau里.   通常可以采取如python 和 r来作为数据处理的前期. Tableau学习系列之Tableau如何通过数据透视表方式读取 ...

  7. requireJS中如何用r.js对js进行合并和压缩css文件

    我运行的环境是windows+node.js,首先是用npm安装requirejs(全局安装,即使用 'npm install requirejs -g',这样方便在各个目录调用),接着就是下载r.j ...

  8. Vagrant定制个性化CentOS7虚拟机模板

    关于虚拟机模板 想用vagrant搭建hadoop集群,要完成以下准备工作: 三个虚拟机实例操作系统都是CentOS7的server版: 每个实例都要安装同样的应用.关闭防火墙.关闭swap等: 今天 ...

  9. 定制个性化的GUI

    你现在还在使用SAP GUI710或者是GUI720,又或者更早的640等吗?那么古董先生,推荐您使用GUI730吧,您可能会730好在哪?那我建议您去百度或者Google问吧.对于新的GUI730, ...

随机推荐

  1. [转载]oracle 数据类型详解---日期型

    1.常用日期型数据类型1.1.DATE这是ORACLE最常用的日期类型,它可以保存日期和时间,常用日期处理都可以采用这种类型.DATE表示的日期范围可以是公元前4712年1月1日至公元9999年12月 ...

  2. [转载]CSS各种居中方法

    水平居中的text-align:center 和 margin:0 auto   这两种方法都是用来水平居中的,前者是针对父元素进行设置而后者则是对子元素.他们起作用的首要条件是子元素必须没有被flo ...

  3. AURO OtoSys IM100 vs Lonsdor K518ISE: which better?

    Comparison: AURO OtoSys IM100 and Lonsdor K518ISE It’s aimed to help make a purchase of decent auto ...

  4. echarts遇到的问题

    X轴无偏移: axisTick: { alignWithLabel: true }, x轴显示所有数据项且避免拥挤在xAxis设置: axisLabel: { interval: 0, rotate: ...

  5. The Little Prince-summary

    The Little Prince-summary 这些年 ”寂寞”这个词使用频率越来越高 这些年 不管有钱没钱 有对象没对象的人 入夜时分总是心里空空 不知生活的意义是什么 我们不喜欢一座城市 对一 ...

  6. 重复打印相同内容(Doc档)的时候自动生成打印编号

    昨天突然接到一个好久未联系的朋友电话,说是江湖救急,要打印一份单据,单据上有个号码要自动生成,如下图,最土的办法是打印完一张,手工改下号码,但这种方法估计碰到成百上千张时估计会疯掉 网上找了实现方法, ...

  7. session(概念、session对象的获取、删除、验证)

    # 1.session(会话)是什么? 服务器为了保存用户状态而创建的一个特殊的对象. 注: 当浏览器访问服务器时,服务器会创建一个session对象(该对象有一个唯一的id,一般称之为session ...

  8. chrome platform

    folder_extension: ---menifest.json ---navigator_change.js manifest.json { "manifest_version&quo ...

  9. 深入理解Word2Vec

    Word2Vec Tutorial - The Skip-Gram Model,Skip-Gram模型的实现原理:http://mccormickml.com/2016/04/19/word2vec- ...

  10. JavaScript之BOM对象

    JavaScript bom对象 BOM对象 window对象 所有浏览器都支持 window 对象.概念上讲.一个html文档对应一个window对象.功能上讲: 控制浏览器窗口的.使用上讲: wi ...