当将图像或热图绘制到pdf时,如下例所示,它们被保存为矢量对象,其中热图中图像或单元格中的每个像素都由正方形表示。即使在适度的分辨率下,这也会导致不必要的大文件,这些文件也会在某些设备上呈现丑陋。 有没有办法让R只将图像区域保存为pdf中嵌入的png或jpg,但保留文本,轴,anotations等作为矢量图形?
我问,因为我经常打印R图形,有时在大型海报上,并希望结合两个世界中最好的。当然,我可以将整个数字保存为高分辨率png,但不会那么优雅,或者手动组合它,例如在Inkscape,但这很乏味。
my.func <- function(x, y) x %*% t(y)
pdf(file="myPlot.pdf")
image(my.func(seq(-10,10,,500), seq(-5,15,,500)), col=heat.colors(100))
dev.off()
感谢您的时间,想法和希望解决方案!
答案 0 :(得分:10)
使用?rasterImage
或更方便地使用选项image
的最新版本useRaster = TRUE
。
这将大大减少文件的大小。
my.func <- function(x, y) x %*% t(y)
pdf(file="image.pdf")
image(my.func(seq(-10,10,,500), seq(-5,15,,500)), col=heat.colors(100))
dev.off()
pdf(file="rasterImage.pdf")
image(my.func(seq(-10,10,,500), seq(-5,15,,500)), col=heat.colors(100), useRaster = TRUE)
dev.off()
file.info("image.pdf")$size
file.info("rasterImage.pdf")$size
image.pdf:813229字节
rasterImage.pdf 16511 bytes
在此处查看有关新功能的更多详细信息:
http://developer.r-project.org/Raster/raster-RFC.html
http://journal.r-project.org/archive/2011-1/RJournal_2011-1_Murrell.pdf