R图:大小和分辨率

我已经堆积到这个问题:我需要用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() 

但是当我应用这个代码时,图像变得非常糟糕,它不能缩放(适合)所需的大小。 我错过了什么? 如何“适合”形象的情节?

在这里输入图像说明

一个可重现的例子:

 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" ) } 

詹姆斯的使用cex的build议,结合各种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() 

当然,更好的解决scheme是放弃基础graphics的这个摆弄,并使用一个系统来处理你的分辨率缩放。 例如,

 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 ) 

如果你想使用基本的graphics,你可以看看这个 。 摘录:

你可以用res =参数来纠正这个问题,以指定每英寸的像素数。 这个数字越小,以英寸为单位的绘图区域就越大,而相对于graphics本身的文字越小。