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()
forlattice
或ggplot2
绘图,或仅return(plot())
用于基本 R 绘图),并且我不喜欢手动指定偏移量和大小(我通常更喜欢在我的幻灯片中获得一个几乎页面填充的居中图表)。我只是想知道是否不能先制作你的绘图(基本 R 绘图、lattice
绘图或ggplot2
绘图),然后定义一个函数export2PPT
,将当前图形设备的输出作为函数捕获并将其传递给和ReporteRs
传递addPlot
给将您的绘图导出为 Powerpoint(居中并适当缩放),类似于以dev.copy2pdf
相同方式导出为 PDF 的功能?
一旦我们有了这样的功能,甚至可能修改grDevices
函数windows() 和 savePlot()的源代码,以增加一个命令 File...Save as Powerpoint 如果有人正在使用该windows()
设备?或者这是 R Core 人要做的事情?
鉴于 MS Office/LibreOffice 的主导地位,我认为尤其是在课堂上使用它会非常方便。(因为 Powerpoint 比 PDF 更容易编辑,可以轻松地对 R 图形的最终布局进行小幅更改,并且矢量输出至少与 PDF 一样好,而且还完全支持透明度 - 对于 PDF,我发现导入在 Inkscape 中通常有点错误,除非使用 Adobe Illustrator)
有谁知道如何做到这一点?
编辑:与此同时,我找到了解决方案,并包装了导出功能,以将当前活动的 R 图导出到 CRAN 包中的 powerpoint,请参阅 https://cran.r-project.org/web/packages/export/index .html和 https://github.com/tomwenseleers/export用于演示使用。该软件包现在使用官员软件包作为后端,因为 ReporteRs 已被弃用...