2011-09-29 74 views
4

如下图所示,将图像或热图绘制为pdf时,它们将被保存为矢量对象,其中热图中的图像或单元格中的每个像素均以正方形表示。即使在适度的分辨率下,这也会导致不必要的大文件,这些文件也会在某些设备上呈现丑陋。 有没有一种方法可以让R只将图像区域保存为pdf中嵌入的png或jpg,但将文本,坐标轴,偏移等保存为矢量图形?在pdf中合并矢量和位图图形

我在问,因为我经常印刷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() 

The figure generated by the above code

感谢您的时间,想法和希望的解决方案!

回答

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个字节

这里看到新功能的详细信息:

http://developer.r-project.org/Raster/raster-RFC.html

http://journal.r-project.org/archive/2011-1/RJournal_2011-1_Murrell.pdf

+0

太好了!不知道它可以做到这一点。 – Backlin