r - 在 R 中生成适合在 Word 2007 中打印的矢量图形图像(即元文件)

标签 r

首先警告:我发布了这个问题 here在 SuperUser 上,但显然是问 R 问题的错误地方。我认识到这不是直接的编程问题,但我相信可以通过更改绘图的生成方式(即通过适当的编码)来解决它。所以我希望读者觉得这适合论坛。

R 图通常完全由矢量图形元素(即点、线、多边形、文本)组成。 R 允许您将图形(或复制粘贴)保存为各种格式,包括各种光栅格式、PDF 或 Windows 元文件。

我通常将图像保存为 PDF 并打印出来。这将完全按照我在纸上的预期以最高质量呈现图像。我避免使用光栅格式(例如 JPG、TIFF)进行打印,因为不可避免地质量较差,而且出版商更喜欢矢量格式。

但是,我需要使用 Microsoft Word 2007 制作大型多页桌面发布文档,因此不能选择使用 PDF。当我从元文件导入我的图形,或直接从 R 复制并粘贴到 Word 中时,图像的屏幕和打印渲染都会略有变化(例如,多边形和它们的填充变得稍微未对齐)。

鉴于我想保持高矢量质量(而不是使用光栅格式),我可以做些什么来使 R 矢量图形与 Word 一起使用? (当然 Sweave 和 LaTeX 会很好,但同样,这不是一个现实的选择)。

考虑这个例子:

plot(c(1:100), c(1:100), pch=20)
## Copy and paste to Word 2007 as Windows metafile
## Print
## Quality is poorer (e.g. dot fills misaligned with borders)

pdf("printsPerfectly.pdf")
plot(c(1:100), c(1:100), pch=20)
dev.off()
## Now print PDF
## Quality is as expected

编辑:根据@John 的建议,我将其制作为 EPS 附言文件(见下文),将其作为图片插入 Word。因为最终它将从 Word 创建的 PDF 打印,所以我使用默认的 Word 2007 设置将其转换为 PDF,在我的 HP Laserjet P1606dn 激光打印机上打印,然后拍照以说明多边形边框和填充未对齐的问题(左图,下图)。我还使用 pdf() 从 R 直接将其生成为 PDF并打印 PDF 并拍照(右下图)。

Illustration of misalignment (left) and perfection (right)

它可能看起来像小土 bean !但是当你为了达到高质量而费了很大的力气时,最后被挫败是令人失望的。此外,这里并不是很明显,但数字的质量(左)不如 PDF(右),忽略照片焦点的差异。

最佳答案

accepted answer对我来说是 Not Acceptable ,因为如果一个人费心制作一个漂亮的基于矢量的图形,那么人们最不想做的就是将它光栅化为位图......除非它是一个非常复杂的图形,需要很长时间才能渲染以矢量格式或类似的格式,但对于大多数图形而言并非如此。
最好的解决方案是以 native Office 矢量格式直接导出到 Word。我刚做了一个新包,export ,这允许人们完全做到这一点,允许将图形或统计表导出到 Word 和 Powerpoint,请参阅
https://cran.r-project.org/web/packages/export/index.html对于演示,请参见
https://github.com/tomwenseleers/export
例如:

library(devtools)
devtools::install_github("tomwenseleers/export")
library(export)
   
?graph2ppt
?graph2doc
?table2ppt
?table2doc

## export of ggplot2 plot
library(ggplot2)
qplot(Sepal.Length, Petal.Length, data = iris, color = Species, 
      size = Petal.Width, alpha = I(0.7))
# export to Word
graph2doc(file="ggplot2_plot.docx", width=7, height=5) 
# export to Powerpoint      
graph2ppt(file="ggplot2_plot.pptx", width=7, height=5)
enter image description here
您还可以使用该功能导出到增强的图元文件
graph2emf(file="ggplot2_plot.emf", width=7, height=5)
但原生 Office 格式的质量更好。
对于最终制作,如果需要,您还可以轻松地将其从 Powerpoint 打印为 PDF,然后它将很好地保持为矢量格式。

关于r - 在 R 中生成适合在 Word 2007 中打印的矢量图形图像(即元文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9555889/

相关文章:

r - 如何从 R 统计程序中完全删除 renv

r - 为 R 中的多个表指定导入顺序

r - 数据帧中非唯一元素的索引

r - 根据 R 中的先前单元格删除行

r - 根据 R 中函数给定的组的因子获取多列的百分比值

r - 使用 :=, 时为什么默认使用 with=TRUE?

r - 模态值(最常见)的简明 R data.table 语法(按组)

r - 使用 .id 使用 purrr::map_df 制作输入项列,无需复制命名向量的输入

r - 在不评估 promise 的情况下获取有关 promise 的信息

r - 显示单个变量的 ggplot 方面