【问题标题】:R eps export and import into Word 2010R eps 导出和导入 Word 2010
【发布时间】:2012-09-26 16:59:39
【问题描述】:

我在从 R 导出 eps 文件并导入 Word 2010 时遇到问题。

我正在使用ggplot2 地块,例如

library(ggplot2)
p <- qplot(disp,hp,data=mtcars) + stat_smooth()
p

即使在调用setEPS()之后,以下都没有生成可以成功导入的文件。

ggsave("plot.eps")

postscript("plot.eps")
print(p)
dev.off()

奇怪的是,如果我从 GUI 的菜单中使用 File -> Save As -> Postscript 生成绘图,它可以正确导入。但是,当 Word 文档随后导出为 pdf 时,图形中的字体有点锯齿。

所以我的问题是:

  • 什么 (ggsave/postscript) 设置组合允许我生成可以导入 Word 2010 的 eps 文件?
  • 当 Word 文档导出为 pdf 时,如何确保字体保持清晰?

更新

经过更多调查,我更幸运地使用cairo_ps 制作了这些情节。但是,导入 Word 时不会显示任何文本。

此外,在检查了乳胶文档中的各种 eps 输出(cairo_ps,从 GUI 保存,ggsave)之后,Word 中的 eps 导入过滤器似乎很差,因为打印/pdf 输出没有匹配乳胶文件的质量。 ggsave 版本(使用postscript)确实存在其他两种方法所没有的颜色问题。

结论是这是一个 Word 问题,因此 fortune(109) 不适用。我很乐意被证明不是这样,但我会将答案和赏金奖励给任何能够提供可以以命令形式复制 GUI 输出的命令的人。

【问题讨论】:

标签: r ms-word ggplot2


【解决方案1】:

您可能最好使用wmf 作为可以在 Windows 上创建的格式。

【讨论】:

  • 不一定,wmf 格式也可能有点小问题。我认为 R-wiki 上有关于将图形导出到 MS Office 的不错参考,但我找不到。
  • 好吧,我的真正建议当然是根本不要碰Word,但不是每个人都能逃到latex/sweave/knitr/rmd/...也就是说,当过去我不得不使用它,wmf 是最不痛苦的选择。
  • 我通常最幸运的是可以在 Office 文档中适当调整大小的高分辨率 PNG(存储大小并没有那么严重)。唯一的技巧是在提高分辨率的同时保持“物理尺寸”(字体、cex 等的缩放比例)不变。
  • 谢谢 Dirk,我可能不得不这样做。我听说过 wmf 的问题。令我困惑的是,我可以从 GUI 中获取工作 eps 文件,但不能以编程方式。
  • @BenBolker 我之前使用的是 PNG,4.5 兆像素,在放大之前看起来还不错。然而,我的完美主义者对它们不太满意。请注意,他也不喜欢使用 Word!
【解决方案2】:

这对我有用...遵循postscript 帮助页面中的建议:

 postscript("RPlot.eps", height = 4, width = 4, horizontal = FALSE, onefile = FALSE,
             paper = "special")
 library(ggplot2)
 p <- qplot(disp,hp,data=mtcars) + stat_smooth()
 p
#geom_smooth: method="auto" and size of largest group is <1000, so using loess. Use 'method = x' to #change the smoothing method.
#Warning message:
#In grid.Call.graphics(L_polygon, x$x, x$y, index) :
#  semi-transparency is not supported on this device: reported only once per page
 dev.off()
#quartz 
#     2 

最后有趣的东西让您注意到这只是一个经过 Mac 测试的解决方案,无论如何到目前为止。

编辑:我刚刚使用 R 版本 2.15.1 (2012-06-22) 进行了测试——“烤棉花糖”:平台:i386-pc-mingw32/i386(32 位)和 Win XP 中的 MS Word 2007它奏效了。命令是插入/图片.../选择 eps 格式/选择文件。

Edit2:除了直接使用 postscript 设备,还有另一种保存方法。带有"eps" 模式的 savePlot 方法在 Windows 中可用(但在 Mac 中不可用)。我同意字体不像在 Mac 上显示的那样流畅,但我可以看出使用 savePlot 保存和从交互式窗口使用 save as 在质量上没有区别。

savePlot(filename = "Rplot2", type = "eps", device = dev.cur(), restoreConsole = TRUE)

savePlot 呼叫(.External(CsavePlot, device, filename, type, restoreConsole))

【讨论】:

  • 我认为setEPS() 在全局范围内设置了这些选项。无论如何,它在 Windows 上仍然不适合我。
  • 它只在某些查看模式下显示。但这是 Word 问题,而不是 R 问题。
  • savePlot 看起来像答案,但它的灵活性低于其他方法。是的,我同意,并且一直都知道,Word 是问题所在——它比全国强迫症会议上的昆虫学分组会议有更多的怪癖和错误!无论如何,Bravo!滴答声和赏金是你的。
  • EPS 的 MS Word 导入过滤器似乎忽略了预览,这对 embed fonts 至关重要。否则预览会看起来很难看,而在带有适当驱动程序的 PostScript 打印机上打印效果很好。
【解决方案3】:

您可以使用 R studio 将 html 文件与您的所有绘图结合起来,然后使用 Word 打开 HTML 文件。

knitr tutorial

【讨论】:

  • HTML什么时候支持EPS Word支持SVG?
  • 我没有说任何关于 EPS 的事情。我只是说一种将图表导入 Word 的简单方法。
【解决方案4】:

我使用postscript 命令的colormodel="rgb" 选项(默认为"srgb")解决了从R 导出.eps 文件并在Windows 7 上导入Word 2010 的问题。

postscript("RPlot.eps", height = 4, width = 4, horizontal = FALSE, 
         paper = "special", colormodel = "rgb")
library(ggplot2)
p <- qplot(disp,hp,data=mtcars) + stat_smooth(se=FALSE, method="loess")
p
dev.off()

【讨论】:

    【解决方案5】:

    Word 确实不能很好地支持 EPS。 更好的解决方案是将您的图表直接以本地 Office 格式导出到 Word 或 Powerpoint。我刚刚制作了一个新包,export,就是这样做的,看 https://cran.r-project.org/web/packages/export/index.html 和 用于演示 https://github.com/tomwenseleers/export

    典型的语法很简单,例如:

    install.packages("export")
    library(export)
    library(ggplot2)
    qplot(Sepal.Length, Petal.Length, data = iris, color = Species, 
          size = Petal.Width, alpha = I(0.7))     
    graph2doc(file="ggplot2_plot.docx", width=6, height=5)
    graph2ppt(file="ggplot2_plot.pptx", width=6, height=5) 
    

    输出是矢量格式,因此在您在 Word 或 Powerpoint 中取消组合图表后完全可编辑。您还可以使用它来导出各种 R stats 对象的统计输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-14
      • 2011-04-07
      • 2017-09-23
      • 2014-01-06
      • 2011-07-05
      • 2014-03-12
      • 2011-03-17
      • 2014-09-07
      相关资源
      最近更新 更多