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

Tom*_*ers 19 powerpoint export r ggplot2 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") 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我觉得在这个工作流程中不方便的是,我现在必须将我的绘图命令包装在一个函数中(使用print()for latticeggplot2plot,或者仅return(plot())用于基础R图),并且我不喜欢手动指定偏移量和大小(我通常更喜欢在幻灯片中获得几乎填充页面,居中的图形.我想知道如果相反,它不可能使你的情节第一(基础R情节,lattice情节或ggplot2情节),然后定义一个函数export2PPT,其捕获当前的图形装置的输出作为一个功能,并将其传递到ReporteRsaddPlot至将您的绘图导出为Powerpoint(居中和适当缩放),类似于以dev.copy2pdf相同方式导出为PDF的功能?

一旦我们有了这样的功能,甚至可能修改grDevices函数windows()和savePlot()源代码以获得一个额外的命令File ...如果有人使用该windows()设备,另存为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用于演示用法.该软件包现在使用官方软件包作为后端,因为不推荐使用ReporteRs ...

Tom*_*ers 33

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

例如:

install.packages("export")
library(export)
Run Code Online (Sandbox Code Playgroud)

导出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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

右键单击PPT后"ungroup"可以看到很好的矢量格式:

在此输入图像描述

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

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