除了添加注释、标签等之外,使用图层还可以完成箱线图、多边形等等多种群组几何对象类型的图,还可以绘制曲面图等。所以,今天继续学习图层的使用~
4. 群组几何对象(Collective Geoms)
在ggplot2中,几何对象大致可以分为个体(individual)几何对象和群组(collective)两种类型。群组几何对象可以多角度的展现数据结果。
group
(分组)这种图形属性可以用来设置:哪些观测值控制哪种图形元素
举例:纵向数据集Oxboys(nlme包)记录了26个男生(subject)在9个不同时期(occasion)中测定的身高(height)和中心化年龄(age)。
data(Oxboys, package = "nlme")
> head(Oxboys)
#> Subject age height Occasion ## 以下是输出结果
#> 1 1 -1.0000 140 1
#> 2 1 -0.7479 143 2
#> 3 1 -0.4630 145 3
#> 4 1 -0.1643 147 4
#> 5 1 -0.0027 148 5
#> 6 1 0.2466 150 6
多个分组+单个图形属性
当我们想从总体上查看数据,将数据中的每个个体区分开,然后用同样的方式映射。这在含有多个个体的纵向数据中很常见,叫“细面图”(spaghetti plot)。
例如,我们想在整体上观察26个男生的成长轨迹(并不区分哪条线是那个男生),就可以在映射aes()
中添加参数group = Subject
:
ggplot(Oxboys, aes(age, height, group = Subject)) +
geom_point() +
geom_line()
如果不加group
这个参数,我们只会得到一条将所有点连起来的奇怪的折线,这就毫无疑义了
在不同图层进行分组
如果我们想要将不同水平下的数据加以整合得到一个汇总信息,这时,基本的数据图层上是每个个体的数据,我们可以在第二个数据层上展示整体组群的信息。
例如在上面的例子中,我们想根据所有男孩的年龄和身高在图中添加一个平滑线条,如果按照上面的方式,在第一层函数中直接添加group = Subject
就会给每个男孩的线条上加一个平滑曲线,这不能得到我们想要的结果:
ggplot(Oxboys, aes(age, height, group = Subject)) +
geom_line() +
geom_smooth(method = "lm", se = FALSE)