R:将当前活动的R图输出到Powerpoint / Word / LibreOffice

时间:2015-07-03 18:43:08

标签: r ggplot2 export powerpoint reporters

目前,我总是使用优秀的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") 

enter image description here

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

一旦我们有了这样一个函数,甚至可能modify the grDevices source code函数windows() and savePlot()都有一个额外的命令File ...如果使用dev.copy2pdf设备那么另存为Powerpoint?或者这是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.htmlhttps://github.com/tomwenseleers/export用于演示用法。该软件包现在使用官方软件包作为后端,因为不推荐使用ReporteR ...

2 个答案:

答案 0 :(得分:32)

刚刚创建了一个新的CRAN包export,允许用户将当前活动图形设备中的R图以可编辑(DrawingML)矢量格式导出为Powerpoint或Word(或LibreOffice Impress / Writer) -liner,完全支持透明度等,请参阅 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)

enter image description here

在“ungroup”上右击PPT后可以看到很好的矢量格式:

enter image description here

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

如果R Core或RStudio的人想要包含这个功能,那么 - 考虑到Office套件的主导地位和广泛使用,我认为在课堂上使用会非常方便!

答案 1 :(得分:0)

您可以尝试eoffice软件包,该软件包在CRAN中也可用。