0%

ggplot2中的facet_grid() facet_wrap()函数详解

在ggplot2中,facet(分面)即在同一个页面上自动摆放多个图形,先将数据分成几个组,然后把每个组分别画图再拼到一起。分成两种类型:

  • facet_grid()
  • facet_wrap()

网格型(facet_grid)封面型(facet_wrap)网格分面生成的是一个2维的面板网格, 面板的行与列通过变量来定义, 本质是2维的; 封装分面则先生成一个1维的面板条块, 然后再分装到2维中, 本质是1维的。

https://www.plob.org/article/10475.html

facet主要用于多y轴的情况。对于只有一个变量进行分面的情况,wrap()和grid() 并没有什么区别,只是横向或纵向排列。

1
2
3
4
5
6
p <- ggplot(mtcars, aes(mpg, wt)) + geom_point()
a = p + facet_grid(. ~ cyl) #以cyl为分类变量
b = p + facet_wrap( ~ cyl, nrow = 3) #wrap与grid的区别
c = p + facet_grid(cyl ~ .) #以cyl为分类变量
d = p + facet_wrap( ~ cyl, ncol = 3) #wrap与grid的区别
(a|b)/(c|d)

image-20200228122523110

对于对两个变量分面的情况,则有明显的区别:

1
2
p + facet_grid(vs ~ am) #以vs和am为分类变量
p + facet_wrap(vs ~ am, ncol = 2) #wrap与grid 的区别

image-20200228123839174