15

有没有一种好方法可以使用 R 中的数据和 ReporteRs 之类的包来生成完整的 Powerpoints?我有大约 900 张幻灯片要创建。我们的分析师目前遵循以下路径:

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

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

理想情况下,我更喜欢:

DB --> R + ReporteRs --> PPTX (x1 time)

这个问题是2倍的。首先,我们的客户(不合理地)更喜欢 PPTX,而不是 Web 甚至 PDF 格式。其次,R 图形无法在 PPTX 中进行编辑,并且有时尺寸/格式不理想,尤其是在轴文本大小方面。那么有没有办法使用 R 来创建可编辑的 Powerpoint 图形、超链接目录等?如果不是这样,是否至少有一套好的 ggplot2 模板可用于像样的 PPTX 演示格式

4

2 回答 2

27

解决了。原来是“不看说明书”的严重案例。解决方案是使用ReporteRsR 包并阅读手册。:)


手册:

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指令提供 [the] 优势 [of] 提供 [ing] 可编辑图形。

所以简单地设置vector.graphic=TRUE,你就设置好了。

我现在可以在 Powerpoint 中编辑在 R 中创建的图形:图例、轴文本、所有图形符号。一切。这是圣诞节来得早!感谢 ReporterRs 的创作者!我现在可以在 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" )

结果: 在此处输入图像描述

于 2015-01-09T21:43:10.927 回答
2

您可以使用我export刚刚在 CRAN 上发布的新包以本地 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) 
于 2018-11-04T00:36:28.627 回答