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 轴坐标

这里写图片描述


 评论