ReporteRs 包可以创建 word,ppt,html 文档。它可以格式化 R 的输出:

 

如可编辑的矢量图,复杂的表格报告功能,企业模板文档的重用(.docx

 

.pptx)。它是一个很好的自动化报告工具,并且不需要你安装微软的

 

任何产品。本文演示的是如何用它来制作 PPT 文档。


 

 

 

 




目录

第一章 入门...................................................................................................................................

3

1.1

创建一个 pptx 对象 ........................................................................................................

3

1.2

将 R 的输出结果发送到一个对象..................................................................................

3

1.3

将对象写入到一个文件中 ................................................................................................

3


1.3.1

示例.........................................................................................................................

3

第二章 模板、版式和样式 .............................................................................................................

4

第三章 添加内容 ...........................................................................................................................

5

3.1

添加幻灯片........................................................................................................................

5

3.2

将 R 的输出结果发送到幻灯片........................................................................................

6

3.3

函数列表..........................................................................................................................

6

3.4

几个关键的函数和参数 ................................................................................................

6


3.4.1

AddSlide 函数 .......................................................................................................

6


3.4.2

Slide.layouts 函数 .................................................................................................

7

3.5

设置大小和位置 ..............................................................................................................

7

3.6

几个特殊函数....................................................................................................................

8


3.6.1

日期形函数 ...........................................................................................................

8


3.6.2

页数.........................................................................................................................

9


3.6.3

页脚.........................................................................................................................

9


3.6.4

副标题...................................................................................................................

9


3.6.5

更换幻灯片 .........................................................................................................

10

第四章 实例分析 .........................................................................................................................

10


 

 

 

第一章 入门

 

 

 

1.1 创建一个 pptx 对象

 

 

 

通过 pptx 函数创建的一个 R 对象可以表示一个 PPT 文档。它包含两个参

 

数:标题和模板文件。如果未指定,模板文件在包目录下是一个空文档。

 

每当创建一个 pptx 对象的时候,你就可以使用一个模板文件。这个文件是从内存中复制过来的,并且副本可以通过 R 输出为一个文档。模板文件提供了可用的格式和幻灯片板式。

 

 

1.2 R 的输出结果发送到一个对象

 

 

接下来,创建 pptx 文件的组成部分。

 

在将 R 的输出发送到一个文档(或幻灯片)之前,必须添加一个幻灯片。通过函数 addSlide 可以实现。

 

在添加幻灯片的时候,需要选定一个布局。然后添加文本,表格,图形和其它组成部分。

 

 

1.3 将对象写入到一个文件中

 

 

最后,使用函数 writeDoc 将对象写入到后缀为.pptx 的文件中。

 

 

1.3.1 示例

 

 

下面我们通过一个带有注解的 R 脚本来做演示:

 

 

 

library( ReporteRs )
 
# 创建一个 pptx 对象的文档(默认模板)
 
 
mydoc = pptx( )
 
# 检测布局名称
 
slide.layouts(mydoc)
 
mydoc = addSlide( mydoc, "Two Content" )
 
# 将 iris 数据集的前 10 行添加到 mydoc
 
mydoc = addTitle( mydoc, "First 10 lines of iris" )
 
mydoc = addFlexTable( mydoc, FlexTable(iris[1:10,] ) )
 
# 在 mydoc 中添加文本(之前是一个空行)
 
# 属性值由正在使用的布局格式给定
 
mydoc = addParagraph( mydoc, value = c("", "Hello World!") )
 
mydoc = addSlide( mydoc, "Title and Content" )
 
# 在 mydoc 中添加图形
 
mydoc = addPlot( mydoc, function() barplot( 1:8, col = 1:8 ) )
 
# 将 mydoc 写入文档中(在当前工作目录下会生成一个 ppt)
 
writeDoc( mydoc, "pp_simple_example.pptx" )


 

 

 

 

第二章 模板、版式和样式

 

 

pptx 函数可以通过"pptx"模板文件创建一个文档。

 

如果没有提供,可以使用一个空文档(在包目录下的 templates 文件中可以找到)

 

 

 

# 使用 D:/docs/template/my_corporate_template.pptx 作为模板(需在上述路径先创建一个名称为 my_corporate_template.pptx 的 ppt,否则提示文件无效)

 

doc = pptx(template = 'D:/docs/template/my_corporate_template.pptx')


 

# 使用默认模板

 

doc = pptx()

 

 

ReporteRs 使用 PPT 文件作为模板。这个模板是一个最原始的 PPT 文档,所有的幻灯片布局,外形(占位符)和样式来自于:

 

 

• 模板中可用的幻灯片版式

 

• 模板中自定义好的设计,模板格式和外形(模板中的占位符)

 

• ppt 模板的内容不会被删除,以便在现有的演示文稿中添加内容,而不用再复制粘贴。

 

 

如果需要除去 PPT 内置的幻灯片母版版式,可以在你的 PPT 演示文稿中添加版式并做自定义。要添加自己的版式,只需在 PPT 中按如下操作即可:

 

 

1. 切换到幻灯片母版视图

 

2. 插入版式

 

3. 插入你想要增加到新版式中的占位符。根据需要包含的内容移动并调整它们的大小。

 

4. 可以对新的占位符做些设置(如:修改背景颜色,字体等)

 

5. 保存并关闭模板

 

6. 通过pptx 函数中参数template 所指定的模板文件名创建一个pptx 对象。

 

 

第三章 添加内容

 

 

3.1 添加幻灯片

 

 

利用 addSlide 函数可以在 pptx 对象中添加一个幻灯片。可用的形状数根据所选的版式通过 R 输出来填充。例如,版式"Title and Content"只能接收一个 R 输出,"Two Content"可以接收两个 R 输出。

 

如果你需要一个新的版式,在 PPT 中创建它。


 

当添加一个 R 输出的时候,如果没有指定位置和大小,R 输出会采用被定义

 

的模板版式中的位置和尺寸。如果你不喜欢模板中的模型位置属性,可以强制改

 

变大小和位置。

 

 

3.2 将 R 的输出结果发送到幻灯片

 

 

接下来,创建幻灯片的组成部分。在幻灯片中添加文本,表格,图形和其它

 

组成部分。可用的函数见如下函数列表。如果现在的幻灯片没有剩余空间或者是

 

你想添加其它内容,可以强制设定模型的大小和位置。具体可参考几个关键的函

 

数和参数

 

 

3.3 函数列表

 

 

下面这些函数只能用于输出格式为 pptx 的文档:

 

 

• 添加标题:addTitle

 

• 添加表格:addFlexTable-见 FlexTable  addFlexTable

 

• 添加图形:见 addPlot

 

• 添加外部图像:见 addImage

 

• 添加文本段落:addPagraph

 

• 添加语法高亮的 R 代码:见 addRScript

 

• 添加幻灯片:addSlide(见"几个关键的函数和参数")

 

•  pptx 对象写入 PPT 文档:见 writeDoc

 

• 添加日期:addDate(见下述"几个特殊函数")

 

• 添加脚注:addFooter(见下述"几个特殊函数")

 

• 添加页数:addPageNumber(见下述"几个特殊函数")

 

 

3.4 几个关键的函数和参数


 

 

3.4.1 AddSlide 函数


 

函数 addSlide 可以添加一个幻灯片到 pptx 对象。参数 slide.layout 指定新建幻灯片的版式设计。

 

 

 

oc = pptx()
 
doc = addSlide( doc, slide.layout = 'Title and Content' )
 
doc = addSlide( doc, slide.layout = 'Two Content' )


 

 

 

 

3.4.2 Slide.layouts 函数

 

 

模板中包含了可用的版式。幻灯片的版式概念在 ReporteRs 中非常重要。

 

内容取决于所选择的版式。当添加的幻灯片版式为"Title and Content"时,幻灯片只包含两个部分:标题和内容。

 

外形(或占位符)的大部分格式都已经设置好了:图形的大小由版式中的外形尺寸指定好了,默认字体和段落样式也由外形的属性值指定。

 

slide.layouts 返回幻灯片版式名称。用 addSlide 函数添加一个幻灯片的时候可能需要核对下有哪些版式可用。

 

 

 

doc = pptx()
 
slide.layouts(doc)


 

 

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

 

图。

 

 

 

slide.layouts(doc, 'Comparison')


 

 

这里,幻灯片可用接收如下形状:标题,四个内容(图形,表格,段落),日期和幻灯片数。


 

 

3.5 设置大小和位置


 

宽度,高度和输出位置在 PPT 模板给定的时候就通过外形属性值设定好了。

 

当我们在幻灯片中添加内容的时候,ReporteRs 会在当前幻灯片中读取下一个可

 

用外形的属性值。你可以指定一些特定输出(表格,文本,图形和外部图像)的外形位置和尺寸 如果没有设定 offx,offy,width,heigh 这些参数。位置的尺寸会通过幻灯片的下一个可用形状中的 width 和 heigh 默认设定好。 如果指定这些参数,可以得到新的外形位置和尺寸。这样做可以在幻灯片没有更多剩余的空间时添加新的内容。

 

 

 

library( ReporteRs )
 
library( ggplot2 )
 
mydoc = pptx( title = "title" )
 
mydoc = addSlide( mydoc, slide.layout = "Title and Content" )
 
myplot = qplot(Sepal.Length, Petal.Length, data = iris,color = Species, size = Petal.Width, alpha = I(0.7) )
 
mydoc = addPlot( doc = mydoc, fun = print, x = myplot,offx = 1, offy = 1, width = 6, height = 5 )
 
mydoc = addFlexTable( doc = mydoc, FlexTable( head( iris ) ),offx = 8, offy = 2, width = 4.5, height = 3 )
 
writeDoc( mydoc, file = "examples/pp_force_pos.pptx" )


 

 

 

 

3.6 几个特殊函数

 

 

3.6.1 日期形函数

 

 

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

 

 

 

doc = pptx()
 
 
doc = addSlide( doc, slide.layout = 'Title and Content' )
 
doc = addDate( doc )
 
doc = addSlide( doc, slide.layout = 'Title and Content' )
 
doc = addDate( doc, 'Dummy date' )


 

 

 

3.6.2 页数

 

 

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

 

 

 

doc = pptx()
 
doc = addSlide( doc, slide.layout = 'Title and Content' )
 
doc = addPageNumber( doc )
 
doc = addSlide( doc, slide.layout = 'Title and Content' )
 
doc = addPageNumber( doc, 'Dummy text' )


 

 

3.6.3 页脚

 

 

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

 

 

 

doc = pptx()
 
doc = addSlide( doc, slide.layout = 'Title and Content' )
 
doc = addFooter( doc, 'Dummy text' )


 

 

 

3.6.4 副标题

 

 

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

 

 

 

doc = pptx()
 
doc = addSlide( doc, slide.layout = 'Title Slide' )
 
 
 
doc = addTitle( doc, 'Presentation title' )
 
doc = addSubtitle( doc , 'This document is generated with ReporteRs. ')


 

 

3.6.5 更换幻灯片

 

 

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

 

 

library( ReporteRs )
 
library( ggplot2 )
 
#需提前在你的工作目录下新建一个名为"pp_example.pptx"的文档 mydoc = pptx( title = 'title', template = 'pp_example.pptx' )
 
myplot = qplot(Sepal.Length, Petal.Length, data = iris, color = Speci es, size = Petal.Width, alpha = I(0.7))
 
mydoc = addSlide( mydoc, slide.layout = 'Title and Content', bookmark = 3 )
 
 
mydoc = addTitle( mydoc, 'my new graph')
 
mydoc = addPlot( mydoc, print, x = myplot )
 
writeDoc( mydoc, 'examples/pp_replacement.pptx' )


 

 

 

第四章 实例分析

 

 

下面的代码展示了可以用在 pptx 对象上的一些最有用的函数。

 

 

library( ReporteRs )
 
require( ggplot2 )
 
mydoc = pptx( title = "title" )
 
# 显示版式名称
 
slide.layouts( mydoc )
 
# 添加一个 Title slide ----------------------------------------------
 
mydoc = addSlide( mydoc, slide.layout = "Title Slide" ) mydoc = addTitle( mydoc, "Presentation title" ) #设置主标题
 
 
mydoc = addSubtitle( mydoc , "This document is generated with Reporte Rs.")#设置副标题
 
# 图形演示 ---------------------------------------------------------- mydoc = addSlide( mydoc, slide.layout = "Title and Content" ) mydoc = addTitle( mydoc, "Plot examples" )
 
 
 
myplot = qplot(Sepal.Length, Petal.Length , data = iris, color = Spec ies, size = Petal.Width, alpha = I(0.7))
 
# 将图形添加到 ppt
 
mydoc = addPlot( mydoc, function( ) print( myplot ) )
 
# 添加页数,日期,脚注
 
mydoc = addPageNumber(mydoc)
 
mydoc = addDate(mydoc)
 
mydoc = addFooter(mydoc, "Modify the graph within PowerPoint")
 
# 表格演示----------------------------------------------------------
 
mydoc = addSlide( mydoc, slide.layout = "Title and Content" )
 
mydoc = addTitle( mydoc, "FlexTable example" )
 
options( "ReporteRs-fontsize" = 12 )
 
# 将 mtcars 数据框对象创建为一个可伸缩的表格并显示行名
 
# 将表头和表体设置为不同的格式属性
 
 
MyFTable = FlexTable( data = mtcars[1:15,], add.rownames = TRUE , bod y.cell.props = cellProperties( border.color = "#EDBD3E"), header.cel l.props = cellProperties( background.color = "#5B7778" ))
 
# 斑马线 - 表行的颜色背景是交替出现的
 
MyFTable = setZebraStyle( MyFTable, odd = "#DDDDDD", even = "#FFFFFF"
 
 
)
 
MyFTable = setFlexTableWidths( MyFTable, widths = c(2,rep(.7,11)))
 
# 设置表格边框线
 
 
MyFTable = setFlexTableBorders(MyFTable, inner.vertical = borderPrope rties( color="#EDBD3E", style="dotted" ), inner.horizontal = borderPr operties( color = "#EDBD3E", style = "none" ) , outer.vertical = bord erProperties( color = "#EDBD3E", style = "solid" ) , outer.horizontal = borderProperties( color = "#EDBD3E", style = "solid" ))
 
 
 
# 添加可伸缩表格
 
mydoc = addFlexTable( mydoc, MyFTable )
 
# 文本演示 ----------------------------------------------------------
 
# 设置默认字体大小为 26
 
options( "ReporteRs-fontsize" = 26 )
 
# 添加一个版式为"Two Content"的幻灯片
 
mydoc = addSlide( mydoc, slide.layout = "Two Content" )
 
# 添加标题
 
 
mydoc = addTitle( mydoc, "Texts demo" ) texts = c( "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", "In sit amet ipsum tellus. Vivamus dignissim arcu sit amet faucibus auctor.", "Quisque dictum tr istique ligula.")
 
# 添加文本
 
mydoc = addParagraph( mydoc, value = texts )
 
# 添加内容 "My tailor is rich" 和 "Cats and Dogs"
 
# 设置文本中某些片段的格式
 
pot1 = pot("My tailor" , textProperties(color="red" ) ) + " is " + po t("rich", textProperties(font.weight="bold") )
 
pot2 = pot("Cats", textProperties(color="red" ) ) + " and " + pot("Do gs", textProperties(color="blue" ) )
 
mydoc = addParagraph(mydoc, set_of_paragraphs( pot1, pot2 ) )
 
writeDoc( mydoc, file = "examples/pp_long_demo.pptx" )



Uhomework站长

R语言教程

2018-04-13


1.2 将 R 的输出结果发送到一个对象 接下来,创建 pptx 文件的组成部分。 在将 R 的输出发送到一个文档(或幻灯片)之前,必须添加一个幻灯片。通过函数 addSlide 可以实