【问题标题】:R: Function to export currently active R plot to Powerpoint/Word/LibreOfficeR:将当前活动的 R 绘图导出到 Powerpoint/Word/LibreOffice 的功能
【发布时间】:2015-07-03 18:43:08
【问题描述】:

目前我总是使用出色的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(居中并适当缩放),类似于函数dev.copy2pdf 以相同的方式导出为PDF?

一旦我们有了这样的功能,甚至可能modify the grDevices source code 的功能windows() and savePlot() 有一个额外的命令文件...另存为Powerpoint 如果有人使用windows() 设备?或者这是 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...

【问题讨论】:

  • 为了在 Inkscape 中编辑,我通常会以 .svg 格式导出。对于您问题的第二部分,您是在谈论 RGui、RStudio 还是其他东西?
  • 感谢您指出这一点 - 我的印象是 .svg 不支持透明度/alpha 通道,但现在显然支持了... 绝对见过 svg 导出有时也会搞砸的情况虽然...而且仍然更喜欢在 Powerpoint 中进行编辑,尤其是对于简单的事情。我的问题的第二部分是关于如何使用下面的函数来实现 File...Save As Powerpoint 选项卡,无论是在 RStudio 的绘图选项卡中,还是在使用 windows() 然后制作绘图时获得的交互式窗口中在那(在Windows下)
  • 我支持“导出到 Powerpoint”按钮或简单易用的功能会很方便的建议。我知道很多人比 Illustrator、Inkscape 等更熟悉 Powerpoint(他们更喜欢在鼠标驱动的软件中进行所有微调),我相信这个功能会很有用。

标签: r ggplot2 export powerpoint reporters


【解决方案1】:

刚刚制作了一个新的 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)

导出lattice plot的示例:

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”可以看到很好的矢量格式:

通过使用文件...另存为...PDF,这些图表还可以从 Word 或 PPT 完美导出为(矢量格式)PDF,与直接在PDF。

如果 R Core 或 RStudio 人员想要包含此功能,请执行 - 我认为,鉴于 Office 套件的主导地位和广泛使用,在课堂上使用会非常方便!

【讨论】:

  • 也许是因为这是一篇旧帖子,但我仍在为此苦苦挣扎。我尝试了您的解决方案,但在 addPlot.docx(doc, myplot, vector.graphic = vector.graphic, fontname = fontname, : 参数 4 匹配多个形式参数 中出现错误
  • @TomWenseleers 是否可以将您的包提交到 CRAN 存储库?您可能必须更改名称,因为 export 可能是保留名称,以喜欢 tomexport 或 TWexport。或 Qwickexport。我认为这对那些无法从 github 安装的人(比如我..嘿嘿)有好处
  • 只是为了让大家知道这些导出功能现已在 CRAN 上推出,请参阅 cran.r-project.org/web/packages/export/index.html
  • 包“export”已从 CRAN 存储库中删除。
  • @dpel 是的,抱歉,我需要再次将其上传到 CRAN。同时,最新版本可从 Github 获得,github.com/tomwenseleers/export
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2015-03-21
    • 2017-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多