为可读性调整堆叠顺序
在上一幅图中,我们把所有不是麻疹(measles)和腮腺炎(mumps)的疾病合并到一个类别里。由此可以合理地认为,相比麻疹和腮腺炎,我们对"other"类别的变化趋势关注更少。
因此,我们做的图存在一个问题。柱形的堆叠顺序是麻疹在上、腮腺炎在中、other 在下。这样会让人难以直观把握腮腺炎随时间的变化,因为它的基线并不恒定,会随着麻疹比例的变化而改变。
Ggplot 会根据数据集中变量出现的顺序来决定堆叠顺序和图例顺序。要覆盖这一默认行为,请将 disease 列转换为因子,并把 levels 设为我们希望在图中使用的顺序。
本练习是课程的一部分
R 中的可视化最佳实践
练习说明
- 修改数据处理流水线中的 mutate,将
disease转换为因子,并设置levels = c('measles', 'other', 'mumps')。 - 使用上一练习相同的代码重新绘图。
交互式实操练习
通过完成这段示例代码来试试这个练习。
disease_counts <- who_disease %>%
mutate(
disease = ifelse(disease %in% c('measles', 'mumps'), disease, 'other') %>%
factor(___) # change factor levels to desired ordering
) %>%
group_by(disease, year) %>%
summarise(total_cases = sum(cases))
# plot
ggplot(disease_counts, aes(x = year, y = total_cases, fill = disease)) +
geom_col(position = 'fill')