R语言可视化及作图11--图片分面函数和一页多图


R语言绘图系列:


1. 图片分面

p <- ggplot(mpg,aes(displ,cty))+geom_point()
a <- p+facet_grid(.~cyl)
a

根据cyl变量把图形分成4列

b <- p+facet_grid(drv~.)
b

根据drv变量把图形分成3行

c <- p+facet_grid(drv~cyl)
c

每个小图x轴和y轴的轴标签完全一致,会导致极值显示不出来

使用scales参数释放坐标轴刻度

mt <- ggplot(mtcars,aes(mpg,wt,color=factor(cyl)))+geom_point()
mt+facet_grid(.~cyl,scales = 'free')
ggplot(mpg,aes(drv,model))+geom_point()+facet_grid(manufacturer~.,scales = 'free',space = 'free')+
  #用三个变量,drv,model和manufacturer进行分面,此处space='free',表示不同分面根据自身数据调整轴取值范围
  theme(strip.text.y = element_text(angle = 0))

2. 一页多图

2.1 grid.arrange函数
生成四张图

library(gridExtra)
library(grid)
p1 <- qplot(1:5,1:5)
p4 <- ggplot(mtcars,aes(x=mpg,y=wt))+geom_point()
p3 <- rectGrob(gp=gpar(fill='pink'))
p2 <- textGrob('Basic usage')
#rectGrob()和textGrob()均是grid包中的函数

将四张图拼到一张图

#grid.arrange函数
grid.arrange(p1,p2,p3,p4,ncol=2)
#layout_matrix参数
gs <- lapply(1:8,function(ii)
  grobTree(rectGrob(gp=gpar(fill=ii,alpha=0.5)),textGrob(ii)))
layout <- rbind(c(1,1,1,2,3),
                c(1,1,1,4,5),
                c(6,7,7,8,8))
#rbind生成一个矩阵,图形的排列完全按照该矩阵的排列,1对应第一张图,以此类推。
grid.arrange(grobs=gs,layout_matrix=layout)

2.2 ggrepel包 在图上添加文本,可以自动把叠加的文本分开。
geom_text_repel函数

library(ggrepel)
ggplot(mtcars,aes(wt,mpg))+
  geom_point(color='red')+
  geom_text_repel(aes(label=rownames(mtcars)),segment.color='blue')+
  #此处我们用geom_text_repel()函数添加文字
  theme_classic(base_size = 16)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容