R图:大小和分辨率


69

我已经提出了一个问题:我需要绘制DPI = 1200和特定打印尺寸的图像。

默认情况下,png看起来不错... 在此处输入图片说明

png("test.png",width=3.25,height=3.25,units="in",res=1200)
par(mar=c(5,5,2,2),xaxs = "i",yaxs = "i",cex.axis=1.3,cex.lab=1.4)
plot(perf,avg="vertical",spread.estimate="stddev",col="black",lty=3, lwd=3)
dev.off()

但是,当我应用此代码时,图像变得非常糟糕,无法缩放(适合)所需的大小。我错过了什么?如何将图像“适合”绘图?

在此处输入图片说明


首先,降低cex.axisand的值cex.lab
ChrisW

3
您可能需要调整的pointsize参数,png因为它似乎可以缩放res
詹姆斯,

pointsizes-确实有帮助,但是轴名称的大小很小(几乎不可见)
chupvl 2011年

@chupvl您可能需要尝试一下才能在易读性和这些元素消耗的绘图画布数量之间进行权衡
James

Answers:


75

一个可重现的示例:

the_plot <- function()
{
  x <- seq(0, 1, length.out = 100)
  y <- pbeta(x, 1, 10)
  plot(
    x,
    y,
    xlab = "False Positive Rate",
    ylab = "Average true positive rate",
    type = "l"
  )
}

James的建议pointsize结合使用各种cex参数,可以产生合理的结果。

png(
  "test.png",
  width     = 3.25,
  height    = 3.25,
  units     = "in",
  res       = 1200,
  pointsize = 4
)
par(
  mar      = c(5, 5, 2, 2),
  xaxs     = "i",
  yaxs     = "i",
  cex.axis = 2,
  cex.lab  = 2
)
the_plot()
dev.off()

当然,更好的解决方案是放弃这种对基本图形的摆弄,而使用可以为您处理分辨率缩放的系统。例如,

library(ggplot2)

ggplot_alternative <- function()
{
  the_data <- data.frame(
    x <- seq(0, 1, length.out = 100),
    y = pbeta(x, 1, 10)
  )

ggplot(the_data, aes(x, y)) +
    geom_line() +
    xlab("False Positive Rate") +
    ylab("Average true positive rate") +
    coord_cartesian(0:1, 0:1)
}

ggsave(
  "ggtest.png",
  ggplot_alternative(),
  width = 3.25,
  height = 3.25,
  dpi = 1200
)

非常感谢!您的解决方案效果很好!但是我想知道-为什么ylab,xlab减小了它的大小?
chupvl 2011年

5
很好,不知道您可以像这样使用ggsave。非常便利。
naught101

1
喜欢ggplot解决方案(+1)。对于ggsave虽然,它似乎width/height并没有做非常多,相反,它是dpi设置该控件的大小。在Windows计算机上,通过设置我得到了3.25英寸的正方形dpi=108。该dpi=1200设置给出了一个巨大的图像。是1200个错字吗?
Assad Ebrahim 2014年

3
@AssadEbrahim您创建的绘图将为width * dpi像素宽和height * dpi像素高。屏幕上显示的图像大小取决于您的查看软件。如果它很聪明,它将识别出预期的宽度和高度,并重新缩放图像以显示适当的尺寸。如果不是,它将显示非常大的图像。请注意,只有在您想要将图像打印到纸张上时,才1200 dpi才有意义:显示器的分辨率没有那么高,而照片打印机则可以。
Richie Cotton

3

如果您想使用基本图形,可以看看this。摘录:

您可以使用png的res =参数来更正此问题,该参数指定每英寸的像素数。此数字越小,以英寸为单位的绘图区域越大,相对于图形本身的文本也越小。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.