ggplot2绘图系统——图形组合、字体选择、保存输出
1.图形组合
一页多图在基础包中利用par和layout函数来切分画布。
ggplot2是先铺好网格背景,再进行绘图,所以要通过切分网格背景来实现一页多图。
gridExtra包(grid扩展包)可用于图形排列组合、表格对象排列组合、规则多边形及椭圆的排列组合。
library(grid) #在画布上画8图(列表) gs <- lapply(1:8, function(i)grobTree(rectGrob(gp=gpar(fill=i,alpha=0.5)),textGrob(i))) #按一定顺序均分画布 grid.arrange(grobs=gs, ncol=4, top='top label', bottom='bottom\nlabel', left='left label', right='right label') #自由切分画布(layout_matrix参数) layout <- rbind(c(1,1,1,2,3), c(1,1,1,4,5), c(6,7,7,8,8)) grid.arrange(grobs=gs,layout_matrix=layout) #按矩阵切分
#使用长宽比来排列组合 grid.arrange(grobs=gs[1:3],ncol=2,widths=1:2,#定义宽度比 heights=unit(c(1,10),c('in','mm')),#定义高度(绝对值) top='arrange with proportion')
2. 图形字体选择及中文绘制
针对windows系统的字体(windows/Fonts路径下),windowsFont和windowsFonts函数。
#从windows字体库中提取字体并命名 windowsFonts(font1=windowsFont('Book Antiqua'), font2=windowsFont('Cambria'), font3=windowsFont('华文中宋'), font4=windowsFont('楷体')) plot(1:10) text(1.5,2,labels = 'Hello',family='font1',cex=2) text(3,4,labels = 'World',family='font2',cex=2) text(5,6,labels = '你好',family='font3',cex=2) text(8,9,labels = '世界',family='font4',cex=2) #很多英文字体对中文不起作用
ggplot2绘图系统一样。
MAC系统
#显示中文 Sys.setlocale(category = 'LC CTYPE',locale = 'zh_CN.UTF-8') #字体选择 plot(1:10) text(1.5,2,labels = 'Hello',family='Times New Roman',cex=2) text(5,6,labels = '你好',family='楷体',cex=2)
中文不显示问题:
如果在Rstudio中字体编码改成UTF-8后,绘制的图形的中文还是被方框替代,则在theme函数中设置中文字体即可。
ggplot(mtcars,aes(wt,mpg))+ geom_point(color='red')+ ggtitle('这是一幅含有中文的散点图')+ theme(plot.title = element_text(size = 18, family = 'STKaiti')) #或楷体
3. 图形保存和输出
杂志一般要求:
位图分辨率不少于300dpi,或矢量图(pdf/eps)或tiff格式。
tiff函数及参数:
tiff( filename = 'test.tiff', width = 480, height = 480, units = 'px', #可改为cm pointsize = 12, compression = , #图片压缩形式,一般不设 bg='white', res = , #分辨率,ppi type = c('cairo','windows') #图形导出类型 )
示例。
tiff('/my/path/plot.tiff', width = 1200, height = 1300. res=300) ggplot(mtcars,aes(mpg,y=wt,color=factor(gear)))+ geom_point() dev.off() #关闭作图窗口
ggsave函数
ggplot(mtcars,aes(mpg,wt))+geom_point() ggsave('test.pdf') #dpi默认300,无需dev.off关闭绘图框
Cairo扩展包
流行的开源2D图形渲染引擎,支持各种输出设备。输出高清图片将图片放大也不失真。
Cairo和基础包grDevices中的函数对应。
- CairoPNG---grDevices:png()。
- CairoTIFF---grDevices:tiff()。
- CairoPDF---grDevices:pdf()。
加载包后,ggsave默认以Cairo处理图片。
library(Cairo) Cairo.capabilities() #支持的图片格式 p = ggplot(iris,aes(x = Species,y = Sepal.Length,colour = Species)) plot1 = p+geom_point() #ggsave默认以Cairo处理图片 ggsave("test1.png",plot1,width = 4,height = 3 )
来源:https://www.cnblogs.com/jessepeng/p/12307819.html