2

另一种方式是对一个连续变量进行分箱,因此这个连续变量的作用就相当于分类变量。接下来就可以使用前面学过的对分类变量和连续变量的组合进行可视化的技术了。例如,你可以对 carat 进行分箱,然后为每个组生成一个箱线图:

## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.5     v purrr   0.3.4
## v tibble  3.1.6     v dplyr   1.0.8
## v tidyr   1.2.0     v stringr 1.4.0
## v readr   2.1.2     v forcats 0.5.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()

以上示例使用了 cut_width(x, width) 函数将 x 变量分成宽度为 width的分箱。默认情况下,不管其中有多少个观测,箱线图看上去都差不多(除了离群点的数量不同),因此很难分辨出每个箱线图是对不同数量的观测进行摘要统计的。如果想要体现这种信息,可以使用参数 varwidth = TRUE 让箱线图的宽度与观测数量成正比。

另一种方法是近似地显示每个分箱中的数据点的数量,此时可以使用 cut_number() 函数:

ggplot(data = smaller, mapping = aes(x = carat, y = price)) +
 geom_boxplot(mapping = aes(group = cut_number(carat, 20)))