首先需要注意的是:我在SuperUser上发布了这个问题here,但它显然是问R问题的错误地方.我承认这不是一个直接的编程问题,但我相信可以通过改变绘图方式(即通过适当编码)来解决.所以我希望读者们觉得这个论坛很合适.

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

我通常把我的图片保存为PDF格式并打印出来.这使图像完全符合我在纸上的预期,具有最高的质量.我避免使用光栅格式(如JPG、TIFF)进行打印,因为不可避免地质量较差,出版商更喜欢矢量格式.

但是,我需要使用Microsoft Word 2007制作一个大型多页桌面发布文档,因此不能使用PDF.当我从元文件导入图形,或直接从R复制并粘贴到Word中时,图像的屏幕和打印渲染都会发生轻微变化(例如,多边形及其填充会略微错位).

考虑到我想保持高矢量质量(而不是使用光栅格式),我该怎么做才能使R矢量图形与Word一起工作?(当然,Swave和LaTeX会很好,但同样,这不是一个现实的 Select ).

考虑这个例子:

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 I的建议,将其制作成EPS postscript文件(见下文),并将其作为图片插入Word.因为最终它将从Word创建的PDF打印出来,所以我使用默认Word 2007设置将其转换为PDF,在我的HP Laserjet P1606dn激光打印机上打印,然后拍摄照片来说明多边形边界和填充不对齐的问题(左图,下图).我还使用pdf()从R直接生成了PDF,打印了PDF并拍了一张照片(右图,下图).

未对准(左)和完美(右)

这看起来像小土豆!但是,当你费尽心机go 实现高质量时,最终被挫败是令人失望的.此外,这里的数字并不明显,但数字的质量(左)不如PDF(右)中的高,忽略了照片上的焦距差异.

推荐答案

您唯一的 Select 是使用高分辨率光栅图形.一旦超过300 dpi,它将完全无法与矢量打印区分开来;它只会生成更大的文件..你的复制粘贴方法将以72 dpi的速度出现,看起来很糟糕.如果你从一个文件导入,你可以在文件中得到解析,事情会好得多.幸运的是,Office2007应该能够处理png图像,它对典型图形的压缩效果最好.假设你想要4英寸宽6英寸高的图像...

png('printsGreat.png', width = 4, height = 6, units = 'in', res = 300)
plot(c(1:100), c(1:100), pch=20)
dev.off()

此外,Office 2007应该能够处理EPS文件,而R postscript文件在打印一页时默认与EPS兼容.

postscript("printsPerfectly.eps", width = 4, height = 6, horizontal = FALSE, onefile = FALSE)
plot(c(1:100), c(1:100), pch=20)
dev.off()

但是如果你没有运气,那就回到高分辨率图像上go .

R相关问答推荐

用单个表达匹配多个替代模式

使用R中的gt对R中的html rmarkdown文件进行条件格式设置表的单元格

从有序数据中随机抽样

工作流程_set带有Dplyrr风格的 Select 器,用于 Select 结果和预测因子R

名称输出pmap on tible

有没有一个R函数允许你从一个数字变量中提取一个数字,而不考虑它的位置(不仅仅是第一个或最后一个数字?

在R中使用数据集名称

为什么我的基准测试会随着样本量的增加而出现一些波动?

在rpart. plot或fancyRpartPlot中使用带有下标的希腊字母作为标签?

使用data.table::fcase()而不是dplyr::case_When()时保持值

在R中按行按列范围查找最大值的名称

在ggplot2的框图中绘制所有级别的系数

计算两列中满足特定条件连续行之间的平均值

R中1到n_1,2到n_2,…,n到n_n的所有组合都是列表中的向量?

R如何计算现有行的总和以添加新的数据行

如何删除R中除数字元素以外的所有元素

将摘要图添加到facet_WRAP gglot的末尾

为什么将负值向量提升到分数次方会得到NaN

如何在Quarto中使用美人鱼图表中的标记来加粗文本

使用dplyr删除具有条件的行