5.5.1 相关变动
如果变动描述的是一个变量内部的行为,那么相关变动描述的就是多个变量之间的行为。相关变动是两个或多个变量以相关的方式共同变化所表现出的趋势。查看相关变动的最好 方式是将两个或多个变量间的关系以可视化的方式表现出来。如何进行这种可视化表示同 样取决于相关变量的类型。
5.5.1 分类变量与连续变量
我们经常需要探索连续变量的分布,按分类变量的分组显示连续变量分布的常用的两种方式是:
- 改变 y 轴的显示内容,不再显示计数,而是显示密度。密度是对计数的标准化,这样每个频率多边形下边的面积都是 1:
data = diamonds, mapping = aes(x = price, y = ..density..) ) + geom_freqpoly(mapping = aes(color = cut), binwidth = 500)
- 使用箱线图。箱线图是对变量值分布的一种简单可视化表示,每张箱线图都包括以下内容:
- 一个长方形箱子,下面的边表示分布的第 25 个百分位数,上面的边表示分布的第 75 个百分位数,上下两边的距离称为四分位距。箱子的中部有一条横线,表示分布的中位数,也就是分布的第 50 个百分位数。这三条线可以表示分布的分散情况,还可以帮助我们明确数据是关于中位数对称的,还是偏向某一侧。
- 圆点表示落在箱子上下两边 1.5 倍四分位距外的观测,这些离群点就是异常值,因此需要单独绘出。
- 从箱子上下两边延伸出的直线(或称为须)可以到达分布中最远的非离群点处。
ggplot(data = mpg, mapping = aes(x = class, y = hwy)) + geom_boxplot()
cut 是一个有序因子:“一般”不如“较好”、“较好”不如“很好”,以此类推。因为很多分 类变量并没有这种内在的顺序,所以有时需要对其重新排序来绘制信息更丰富的图形。重新排序的其中一种方法是使用 reorder() 函数。
例如,我们看一下 mpg 数据集中的 class 变量。你可能很想知道公路里程因汽车类别的不同会有怎样的变化,可以基于 hwy 值的中位数对 class 进行重新排序:
ggplot(data = mpg, mapping = aes(x = class, y = hwy)) + geom_boxplot(mapping = aes( x = reorder(class, hwy, FUN = median), y = hwy ))
如果变量名很长,那么将图形旋转 90 度效果会更好一些。你可以通过coord_flip()
函数:
ggplot(data = mpg) + geom_boxplot( mapping = aes( x = reorder(class, hwy, FUN = median), y = hwy ) ) + coord_flip()
nycflights13::flights %>% mutate( cancelled = is.na(dep_time), sched_hour = sched_dep_time %/% 100, sched_min = sched_dep_time %% 100, sched_dep_time = sched_hour + sched_min / 60 ) %>% ggplot(mapping = aes(sched_dep_time)) + geom_freqpoly( mapping = aes(color = cancelled), binwidth = 1/4 )