【问题标题】:Plots with good resolution for printing and screen display具有良好分辨率的打印和屏幕显示图
【发布时间】:2011-11-17 12:15:43
【问题描述】:

我正在使用

dev.new(width=5.8, height=3) 
par(mfrow=c(1,3),mar=c(1,1,2,1),oma=c(4,1,2,0),mgp=c(3, 0.5, 0)) 
plot(...)

并将它们复制并粘贴到 Microsoft Word 中。它们在 Word 中看起来非常好(我尝试了不同的宽度,直到找到一个效果很好的宽度)但是当我打印它们时它们看起来很糟糕。经过一些网络搜索后,我发现打印分辨率至少应为 300ppi。因此,在摆弄了永恒的宽度和高度之后,我提出了使图看起来相同大小但分辨率更高的代码:

png(file="mag_feb.png",width=1800,height=950,res=300)

现在它们在打印时看起来不错,但在 Word 中(在屏幕上)看起来一点也不清晰。会不会是尺寸的问题?有没有办法让图表在打印和屏幕上看起来都很好?我已经为此花了几个小时,想不出其他可以尝试的方法,因此非常感谢任何帮助!

谢谢!

【问题讨论】:

  • 不确定 R 的具体情况,但我首选的导出图形格式是矢量,而不是光栅图像。 PDF 和 EPS 通常是很好的格式,如果 SVG 支持它,它也是如此
  • 您可以将您的 Word 文件导出为 PDF 以便在屏幕上阅读。这仍然会导致文档中出现丑陋的图像吗?
  • 是的,它们在 word 和 PDF 上看起来是一样的
  • @awoodland 如果我将图形保存在 PDF 中,如何在不将它们转换为位图的情况下将它们导入 Word?
  • @sbg - 恐怕我无能为力,出于这个原因和许多其他原因,我通常将 LaTeX 用于我关心它们外观的所有文档。 (我怀疑这也有点离题)

标签: r plot resolution


【解决方案1】:

您原来的 png 命令有一个小错误。试试这个:

png(file="mag_feb.png", units="in", width=11, height=8.5, res=300)

现在,width 和 height 以英寸为单位,而 res 以像素/英寸为单位。之前,res 参数被忽略了。

【讨论】:

    【解决方案2】:

    对于要打印的绘图,您应该使用矢量格式,例如 PDF。如果图像在打印时看起来不错,但在 Word 中却没有,则说明 Word 的缩小功能存在问题。您可能想尝试使用矢量 Windows 元文件格式将内容导入 Word。

    【讨论】:

    • 感谢您的回答!我最初使用的是“复制为元文件”,但我在这个 word 文档中有很多图表,它只是减慢了 word 在滚动时会冻结的程度。 win.metafile 或 PDF 也会发生同样的情况吗?另外,我如何将图像从 PDF 转换为 word?如果我使用“相机”底部的情节仍然不好看...
    • win.metafile() 会给你同样的问题。您的最终问题是 Word 不是为高质量图像的布局而设计的。如果可能,最好从 Word 文档中删除图像并单独打印。或者使用更合适的发布软件(LaTeX 或 Adob​​e InDesign)。
    • 如果您的工作不需要您使用Word,我肯定会切换到Latex。如果你会用 R,你肯定会用 Latex。
    【解决方案3】:

    正如@awoodland 所说,您希望以矢量格式导出图形。

    win.metafile(file="mag_feb.png") # or pdf(), svg(), etc.
    par(mfrow=c(1,3),mar=c(1,1,2,1),oma=c(4,1,2,0),mgp=c(3, 0.5, 0)) 
    plot(...)
    dev.off()
    

    【讨论】:

    • 感谢您的回答!我最初使用的是“复制为元文件”,但我在这个 word 文档中有很多图表,它只是减慢了 word 在滚动时会冻结的程度。 win.metafile 或 PDF 也会发生同样的情况吗?另外,我如何将图像从 PDF 转换为 word?如果我使用“相机”底部的情节仍然不好看...
    • 我觉得Word支持WMF最好?所以你可以使用插入菜单或类似的东西将它导入到 word 中?
    【解决方案4】:

    我希望这不是一个迟到的回复,但我从 R 中保存最佳图片的工作流程如下:

    1) 使用“dev.copy2pdf”将图形直接从图形设备复制到 pdf 文件:

    dev.copy2pdf("image.pdf", width=8.5, height=11)
    

    2) 使用 imagemagick 将 pdf 转换为高分辨率 png,使用以下命令:

    convert -density 600 image.pdf image.png
    

    3) 可选 - 也可以使用 imagemagick,删除所有白色边框,只留下重要的内容:

    convert image.png -trim image_trimmed.png
    

    希望对你有帮助。

    【讨论】:

    • 也是我的工作流程,多年来在质量和可重复性方面都被测试为最可靠的工作流程。但是需要一个linux盒子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多