在R中如何按多分组绘制堆叠+并列组合的ggplot2柱状图?
ggplot2实现堆叠+并列组合柱状图
需求说明
你需要绘制以age.cat为X轴、prop为Y轴的柱状图,要求:
- 按
sex实现并列分组(同年龄分组下,不同性别的柱子并列) - 每个并列柱子内部按
activity_group实现堆叠分组(每个性别柱子由不同活动类型的比例堆叠而成)
解决方案代码
library(ggplot2) # 绘制堆叠+并列组合柱状图 ggplot(df, aes(x = interaction(age.cat, sex), y = prop, fill = activity_group)) + geom_col(position = "stack") + # 调整X轴标签,仅显示年龄分组名称 scale_x_discrete(labels = function(x) gsub("\\..*", "", x)) + # 设置轴标签与图表标题 labs( x = "年龄分组", y = "比例", fill = "活动类型", title = "不同年龄、性别组的活动类型比例分布" ) + # 可选:使用简约主题优化视觉效果 theme_minimal()
代码解释
interaction(age.cat, sex):将年龄分组与性别组合成新的X轴变量,实现同年龄下不同性别的柱子并列展示fill = activity_group:指定柱子内部的堆叠分组依据为活动类型scale_x_discrete:处理X轴标签,移除交互变量中的性别后缀,仅保留清晰的年龄分组名称- 可根据需求调整主题样式、颜色方案或标题内容,适配不同展示场景
内容的提问来源于stack exchange,提问作者aerw4
相关产品推荐
相关产品推荐

