在R中创建专业的Powerpoint

时间:2015-01-09 18:56:42

标签: r package powerpoint reporters

有没有一种方法可以使用来自R的数据和像ReporteRs这样的包来生成完整的Powerpoint? 我有大约900张幻灯片可供创建。我们的分析师目前遵循这条道路:

DB - > SAS - > CSV - > PPTX(嵌入式图形)(x900次)

这是手动的,容易出错并且很慢。

理想情况下,我更愿意:

DB - > R + ReporteRs - > PPTX(x1时间)

问题是双重的。首先,我们的客户(不合理地)更喜欢PPTX而不是网络甚至是PDF格式。其次,R图形不能在PPTX中编辑,有时不是理想的尺寸/格式,特别是在轴文本大小方面。 那么有没有办法使用R来创建可编辑的Powerpoint图形,超链接目录等?如果不是这样,那么至少一套好的ggplot2模板可以和不错的PPTX一起使用演示文稿格式

2 个答案:

答案 0 :(得分:27)

解决。原来是“不读手册”的严重案例。解决方案是使用ReporteRs R包并阅读手册。 :)


手册:

addPlot {ReporteRs}
addPlot(doc, fun, pointsize = 12, vector.graphic = F, ...)
vector.graphic  
logical scalar, if TRUE, vector graphics are produced instead of PNG images.
SVG will be produced for bsdoc objects and DrawingML instructions for docx and
pptx objects.  
DrawingML instructions offer advantage to provide editable graphics
(forms and text colors , text     contents, moving and resizing is disabled).

关键段落: [...] pptx对象的DrawingML指令。 DrawingML说明提供[提供]可编辑图形的优势。

因此,只需设置vector.graphic=TRUE即可设置。

我现在能够在Powerpoint中编辑在R中创建的图形:图例,轴文本,所有图形符号。一切。这是Xmass来得早!谢谢ReporteRs的创作者!我现在可以在3小时内完成300之前的事情!惊人的。

以下完整示例:

library( ReporteRs )
require( ggplot2 )
mydoc = pptx(  )
mydoc = addSlide( mydoc, slide.layout = "Title and Content" )
mydoc = addTitle( mydoc, "Plot examples" )
myplot = qplot(Sepal.Length, Petal.Length
, data = iris, color = Species
, size = Petal.Width, alpha = I(0.7)
)
# Add titles and then 'myplot'
mydoc = addPlot( mydoc, function( ) print( myplot ), vector.graphic=TRUE)  
writeDoc( mydoc, file = "~/CustomReport.pptx" )

结果: enter image description here

答案 1 :(得分:2)

您可以使用刚在CRAN上发布的我的新export包,以本机Office矢量格式轻松导出到Office(Word / Powerpoint),从而生成完全可编辑的图形,请参见 https://cran.r-project.org/web/packages/export/index.htmlhttps://github.com/tomwenseleers/export

例如:

install.packages("export")
library(export)

?graph2ppt
?graph2doc

library(ggplot2)
qplot(Sepal.Length, Petal.Length, data = iris, color = Species, 
      size = Petal.Width, alpha = I(0.7))
graph2ppt(file="ggplot2_plot.pptx", width=7, height=5) 
graph2doc(file="ggplot2_plot.docx", width=7, height=5)