如何在R中保存绘图图像?

15

我从一个非常大的向量(数量级为10^7)创建了一个图。使用通常的方法将绘制保存为pdf文件的问题在于,pdf文件会变成一个非常大的文件,大约10MB左右。我不希望一个简单的时间序列图像有这么大的尺寸。如何保存这个图像,使得大小小到最多100千字节?


4
标准答案是你可能不需要绘制所有这些点,但如果你认为确实需要绘制,那么像png这样的光栅格式,并且具有良好的分辨率,将产生更轻的输出文件。 - baptiste
2
PDF 文件会很大,因为它们使用矢量图形(这也使它们更适合调整大小、缩放等)。其他格式具有固定的分辨率,这将使它们的大小与点数无关。 - Señor O
2个回答

21

baptiste的建议采用png格式制作光栅图是正确的。与Jdbaba建议复制开放设备不同,我建议您直接调用png()设备。这样可以节省很多时间,因为您不需要先在单独的设备窗口中加载绘图,如果数据集很大,则加载时间可能会很长。

示例

#plotting of 1e+06 points
x <- rnorm(1000000)
y <- rnorm(1000000)
png("myplot.png", width=4, height=4, units="in", res=300)
par(mar=c(4,4,1,1))
plot(x,y,col=rgb(0,0,0,0.03), pch=".", cex=2)
dev.off() #only 129kb in size

enter image description here

请参阅?png,以获取PNG设备的其他设置。


5

如果想绘制PNG文件,请使用以下命令:

dev.copy(png,"myfile.png",width=8,height=6,units="in",res=100)
dev.off()

如果您想输出高质量的图表,可以将res值更改为更高的值。

如果您想将文件保存为pdf,请使用以下命令:

pdf("myfile.pdf",width=8,height=6)
dev.off()

记得根据需要更改宽度和高度的值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接