R语言通过支持Cairo矢量图形处理的类库,可以创建高质量的矢量图形(PDF,PostScript,SVG) 和 位图(PNG,JPEG, TIFF),同时支持在后台程序中高质量渲染。在ggplot2中,图片输出经过Cairo包处理后,输出个效果更好,可以输出成PDF格式,PDF格式体积小,同时可以储存为其他任何格式,随后再将PDF储存为eps格式并在Photoshop中打开做最终的调整,例如调整比例、色彩空间和dpi(一般杂志和出版社要求dpi=300以上)等。额外需要注意的是ggplot2中的字体大小问题,在cookbook-r一书中指出,在ggplot2中绝大多数情况下,size的大小以mm记,详细的讨论也可以参考stackover的讨论,而在theme()中对element_text()里的size进行调整,此时的size是以磅值(points, pts)来进行表示。
下面以3种ggplot2种常用的图片输出方式,输出一幅主标题为20pts,横纵坐标标题为15pts,长为80mm(3.15in),宽为60mm(2.36in)的图为例。
require(ggplot2) require(Cairo) ggplot() + geom_text(aes(x = 16, y = 16), label = "ABC", size = 11.28) + #尺寸为11.28mm,即为32磅 geom_text(aes(x = 16, y = 14.5), label = "ABC", size = 32) + #尺寸为32mm labs( x = "x axis", y = "y axis") + ylim( c(14, 16.5)) + xlim( c(15.75, 16.25)) + theme( axis.title.x = element_text(size = 32),#尺寸为32磅 axis.title.y = element_text(size = 32))#尺寸为32磅 x <- seq(-4,4, length.out = 1000) y <-dnorm(x) data <- data.frame(x, y) #用Cairo包输出 require(Cairo) CairoPDF("plot1.pdf", 3.15, 3.15) #单位为英寸 ggplot(data, aes(x = x, y = y)) + geom_line(size = 1) + theme_bw() dev.off() #关闭图像设备,同时储存图片 plot2 <- ggplot(data, aes(x = x, y = y)) + geom_line(size = 1) + theme_bw() #用ggsave输出,默认即以用Cairo包进行抗锯齿处理 ggsave("plot2.pdf", plot2, width = 3.15, height = 3.15) #RStudio输出