You Yang

我们趋行在人生这个亘古的旅途,在坎坷中奔跑,在挫折里涅槃,忧愁缠满全身,痛苦飘洒一地。我们累,却无从止歇;我们苦,却无法回避。——《百年孤独》

ggplot2绘图艺术-2-两种变量

individual & collective

数据可以被粗浅的分为 individual 和 collective 两种数据。

individual geom(个体几何对象)对数据框的每一条数据绘制一个可以区别于其他个体的图形对象。例如, 点几何对象用点来表示每一条观测。

collective geom(群组几何对象)用于表示多条观测, 它们可以是某个统计摘要的一个结果,或者是几何对象的基础展示。

在很多情况,我们想把数据分成不同组,但是用同样的方法表达它们。换句话说,我们想把它们分为 individual 数据,但是并不是识别它们。这在很多纵向研究中很常见,这种情况画出的图被称为意大利面图。

Oxboys

1
2
3
4
5
6
7
8
9
> data(Oxboys, package = "nlme")
> head(Oxboys)
Subject age height Occasion
1 1 -1.0000 140.5 1
2 1 -0.7479 143.4 2
3 1 -0.4630 144.8 3
4 1 -0.1643 147.1 4
5 1 -0.0027 147.7 5
6 1 0.2466 150.2 6

按照 subject 分组来绘制不同阶段的男孩身高变化图

1
2
3
ggplot(Oxboys, aes(age, height, group = Subject)) + 
geom_point() +
geom_line()

pic1-oxboys-group

添加拟合曲线,这时候 group 要放在 line 里设置。假如设置在 smooth 里会是对每条连成的线,都拟合一条直线。因为是这里我也有点懵…… 总之遇到 group 分组,哪里有问题就换一个地方。

1
2
3
4
ggplot(Oxboys, aes(age, height)) + 
geom_point() +
geom_line(aes(group = Subject))+
geom_smooth(size = 2, color = "#3366FF")

pic2-oxboys-smooth