R:将当前活动的 R 图导出到 Powerpoint/Word/LibreOffice 的函数

R: Function to export currently active R plot to Powerpoint/Word/LibreOffice

目前,我总是使用出色的 ReporteRs 包将我的 R 图以矢量格式导出到 Powerpoint,如

library(ReporteRs)
myplot = function() print(qplot(Sepal.Length, Petal.Length, data = iris, color = Species, size = Petal.Width, alpha = I(0.7)))
doc = pptx()
doc = addSlide(doc, slide.layout = "Blank") 
doc = addPlot( doc, myplot, vector.graphic = TRUE, fontname="Arial",
               offx = 0.1*dim(doc)$slide.dim["width"], offy = 0.05*dim(doc)$slide.dim["height"], 
               width = 0.8*dim(doc)$slide.dim["width"], height = 0.9*dim(doc)$slide.dim["height"])
writeDoc( doc, "plot.pptx") 

我发现此工作流程中的不便之处在于我现在必须将我的绘图命令包装在一个函数中(print() 用于 latticeggplot2 绘图,或者只是 return(plot()) 用于基础 R 图),并且我不喜欢手动指定偏移量和大小(我通常更喜欢在我的幻灯片中获得几乎页面填充的居中图表)。我只是想知道是否不可能先制作您的绘图(基础 R 绘图、lattice 绘图或 ggplot2 绘图),然后定义一个捕获输出的函数 export2PPT将您当前的图形设备作为一个函数并将其传递给 ReporteRsaddPlot 以将您的绘图导出为 Powerpoint(居中并适当缩放),类似于在以同样的方式导出为 PDF?

一旦我们有了这样的功能,甚至 modify the grDevices source code of functions windows() and savePlot() 如果使用 windows() 设备,甚至可以有一个额外的命令文件...另存为 Powerpoint?或者这是 R Core 人员要做的事情?

考虑到 MS Office/LibreOffice 的主导地位,我认为特别是在课堂上使用它会非常方便。 (由于 Powerpoint 比 PDF 更容易编辑,因此可以轻松地对 R 图形的最终布局进行小的更改,矢量输出至少与 PDF 一样好,而且还完全支持透明度 - 对于 PDF,我发现导入在 Inkscape 中通常有点问题,除非使用 Adob​​e Illustrator)

有人知道怎么做吗?

编辑:与此同时,我找到了解决方案,并包装了导出函数以将当前活动的 R 图导出到 CRAN 包中的 powerpoint,请参阅 https://cran.r-project.org/web/packages/export/index.htmlhttps://github.com/tomwenseleers/export 用于演示使用。该软件包现在使用 officer 软件包作为后端,因为 ReporteRs 已被弃用...

刚刚制作了一个新的 CRAN 包 export,它允许将当前活动图形设备中的 R 图导出到 Powerpoint 或 Word(或 LibreOffice Impress/Writer)中的可编辑(DrawingML)矢量格式为一行,完全支持透明度等,请参阅 https://cran.r-project.org/web/packages/export/index.html 和演示 https://github.com/tomwenseleers/export

例如:

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

导出示例 lattice 图:

library(effects)
fit=lm(prestige ~ type + income*education, data=Prestige)
plot(Effect(c("income", "education"), fit),multiline=T, ci.style="bands")
graph2ppt(file="effect plot.pptx", width=7, height=5)

在PPT中右击"ungroup"可以看到矢量格式很好:

从 Word 或 PPT 中,这些图表也可以通过使用文件...另存为...PDF 完美地导出为(矢量格式)PDF,并且与通过编辑相比,对布局进行细微调整要容易得多直接在 PDF 中。

如果 R Core 或 RStudio 用户想要包含此功能,请这样做 - 我认为在课堂上使用起来非常方便,因为 Office 套件的主导地位和广泛使用!

您可以试试 CRAN 中也提供的 eoffice 包。