在 R 中导出图像:Cairo 和 ggsave 增加指定尺寸

问题描述

我正在尝试使用 ggsave() 和 Cairo() 导出尺寸为 90x150 毫米、分辨率为 300 dpi 的图形。问题是,即使我在代码中正确指定了图形尺寸,它们最终还是比预期的大得多(281x468 毫米)。这是我一直在使用的代码

x <- 1:10; y = x*x
plot = qplot(x,y,geom=c("point","line"))

#ggsave
ggsave(plot,filename = "test.png",width = 90,height = 150,dpi = 300,units = "mm",type = "cairo")

#Cairo
Cairo(90,150,file="test2.png",type="png",bg="white",res = 300,units = "mm")
plot
dev.off()

解决方法

刚刚发现 Cairo() 和 ggsave() 大小输出受图像分辨率的影响,即使您选择“公制”维度作为输出。

因此,基本上,如果您想要 300 dpi 的 90x150 图形,则必须将此尺寸除以 3(因为 300 dpi 是默认分辨率的 3 倍,即 100dpi)。您的设置将为 30x50。