如何合并多个箱线图?基于年龄分组的性别支出差异可视化需求
整合年龄组男女支出箱线图的解决方案
嘿,我来帮你搞定这个整合箱线图的问题!你现在分开绘制每个年龄组的图确实没法直观对比,咱们可以通过先创建统一的年龄分组变量,再用这个变量生成整合后的箱线图,轻松把所有组放在同一画布上对比。
第一步:修正分组逻辑并创建分组变量
你原来的分组规则有重叠(比如Age>45会包含45-55和>55的人群),这会导致数据统计错误。先修正分组逻辑,再给数据集新增一个Age_Group变量:
# 加载需要的包 library(dplyr) library(ggplot2) # 读取数据(如果还没读入的话) Adv_data <- read.csv("Adv.csv") # 创建无重叠的年龄分组变量 Adv_data <- Adv_data %>% mutate(Age_Group = case_when( Age < 25 ~ "Age <25", Age >= 25 & Age < 45 ~ "Age 25-44", Age >= 45 & Age < 55 ~ "Age 45-54", Age >= 55 ~ "Age >=55" ))
第二步:绘制整合后的箱线图
用新的Age_Group作为x轴,就能把所有年龄组的箱线图放在同一图中,同时按Gender区分颜色:
ggplot(Adv_data, aes(x = Age_Group, y = AveMonthSpend, color = Gender)) + geom_boxplot(width = 0.7) + # 调整箱线宽度让图更美观 labs( title = "Monthly Spend Difference by Age Group & Gender", x = "Age Group", y = "Average Monthly Spend", color = "Gender" ) + theme_bw() # 用简洁的主题,也可以换成theme_minimal()
为什么这样做更合理?
- 避免了重复统计重叠分组的问题,保证数据准确性
- 所有年龄组在同一坐标系下,能直接对比组内男女支出差异和不同年龄组的整体支出趋势
- 代码更简洁,后续调整分组或样式也更方便
内容的提问来源于stack exchange,提问作者PhilBoaz
相关产品推荐
相关产品推荐

