【问题标题】:Creating high-resolution figures in R在 R 中创建高分辨率图形
【发布时间】:2013-05-17 22:43:27
【问题描述】:

这是这样让我发疯的基本问题。在 R 中生成图形时,它在屏幕上看起来很棒。但是,当我尝试使用 png()、tiff() 等通过将分辨率设置为 300 并将宽度和高度设置为适合期刊论文的合理值来将其直接生成到文件时,有两个问题:

  1. 所有线条都做得超级粗
  2. 所有字母都是大字体。

这真的很烦人,我尝试过使用 pointsize 选项,它有助于缩小字体大小,但线宽仍然粗而难看。您能否建议 R 中出了什么问题以及我该如何解决这个问题?我环顾四周,大多数解决方案都涉及使用其他图像处理软件。我宁愿弄清楚为什么 R 在提高分辨率时会这样做,以及为什么它会使数字如此难看。这是一个例子:

png(file="test.png",width=5,height=5,units="cm",res=300)
plot(rnorm(1000),rnorm(1000),xlab="some text")
dev.off()

谢谢!

【问题讨论】:

  • 您可以使用 pdf() 为每个绘图创建 PDF,作为单独的文件。
  • 当我在您的示例中使用 pdf() 时,它的大小不到 PNG 的一半,而且看起来更好看。试试pdf(file="test.pdf") 而不是你的png() 行。
  • R 中图形分辨率的相关博文:blog.revolutionanalytics.com/2009/01/…
  • 我建议调整高度和宽度,直到情节看起来正确。例如,12cm 效果很好:png(file="test.png",width=12,height=12,units="cm",res=300)。你正在制作一个位图图像,所以不要太从字面上理解“厘米”——这只是强制 R 重新调整字体和线宽的一种方式。一旦找到合适的高度和宽度,就可以调整 res 以使像素尺寸符合您的需求。
  • 我认为 R 的图形输出与设备无关,因为图形系统使用了令人讨厌的尺寸组合 - 绝对长度(以厘米或点为单位的东西)以及这些长度有多大的想法图形输出窗口是,连同小数长度。我以前听人抱怨过这个问题(以至于我认为 user19999 可能是 Ben ...)。我想知道 R 是否应该尝试朝着更独立于设备的方向努力......

标签: r


【解决方案1】:

我认为问题在于默认点大小(请参阅?png 中的参数pointsize):

这是您使用默认值 12 得到的结果:

但如果你把它降低到 6:

png(file="test.png",width=5,height=5,units="cm",res=300, pointsize=6)
plot(rnorm(1000),rnorm(1000),xlab="some text")
dev.off()

按照我的理解,12 的磅值意味着cex=1 处的文本是 12/72(即 1/6)英寸。你的png大约是。 2 英寸,因此您的文本是默认点大小的绘图宽度的 1/12。

【讨论】:

  • 我尝试更改点大小,我同意图像看起来更好一些,但是看看绘图字符,它们有粗糙的边缘并且看起来很糟糕,与印刷期刊的质量相去甚远,这应该是300dpi 的高分辨率。
  • 如果您以正常大小(即每 5 厘米 5 厘米)查看绘图,则字符看起来还不错。
  • @FCB 在他的ggplot2 书中,Hadley Wickham 建议对光栅图形使用 600 dpi(第 8.3 章)。此建议可能也适用于基本图形。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-18
  • 2012-01-15
  • 2013-06-02
  • 1970-01-01
  • 2013-12-18
  • 2015-12-23
相关资源
最近更新 更多