ggplot2学习笔记之分面


分面是一个强大的工具,可以快速分析出数据各子集模式的异同。ggplot2 提供了两种分面类型。

1.网格分面(facet_grid)

网格分面在2 维网格中展示图形。输入数据时,你需要考虑哪些变量作为行,哪些变量作为列,规则如下:

  • 不进行分面:即不使用函数facet_grid()或者使用facet_null(),此时得到的是单独画板;
ggplot(mtcars, aes(mpg, wt)) + geom_point()
ggplot(mtcars, aes(mpg, wt)) + geom_point() + facet_null() #等价于以上

这里写图片描述

注意:在0.9.0 版本前facet_grid(.\~.)表示不进行分面

  • 一行多列:“.\~A”。图形以一行多列展示,纵坐标相同,用于y 位置的比较。
ggplot(iris, aes(Sepal.Length, Sepal.Width)) + geom_point() + facet_grid('. ~ Species')

这里写图片描述
  Species 变量有三个属性值,按其分组,绘制一行三列的图形,x 轴相同,通过查看y 轴的比较三者的不同。

  • 一列多行:“B\~.”。图形以一列多行展示,横坐标相同,用于x 位置的比较。
ggplot(iris, aes(Sepal.Length, Sepal.Width)) + geom_point() + facet_grid('Species ~ .')

这里写图片描述

  • 多列多行:“B\~A”。按照A 与B 变量分组绘图;
h <- ggplot(mtcars, aes(x = mpg, y = wt)) + geom_point()
h + facet_grid(cyl ~ vs)

这里写图片描述

  • 多个变量的多个水平行或者列上(或者同时):”A+B\~.”、”.\~A+B”、 ”A+B\~C”。
mg <- ggplot(mtcars, aes(x = mpg, y = wt)) + geom_point()
mg + facet_grid(vs + am ~ gear)

这里写图片描述

mg + facet_grid(vs + am ~ gear, margins = TRUE) #参数margins = TRUE 表示展示所有的边际图

这里写图片描述

mg + facet_grid(vs + am ~ gear, margins = "am") #参数margins = "am"表示展示am 边际图

这里写图片描述

2.封装型(facet_wrap)

facet_wrap 并不是用于两个或者更多的变量来生成一个2 维网格,而是生成一个长的面板条块(由任意数目的变量生成),然后封装在2 维中。

p <- qplot(price, data = diamonds, geom = "histogram", binwidth = 1000)
p + facet_wrap(~ color)

这里写图片描述

p + facet_wrap(~ color, nrow = 2) #图形按两行显示,参数ncol 是设置列的

这里写图片描述

p + facet_wrap(~ color, scales = "free_x") #所有图形都显示x 轴坐标,y 轴是参数“free_y”

这里写图片描述

p + facet_wrap(~ color, scales = "free") #所有图形都显示x、y 轴坐标

这里写图片描述


评论

0 评论