ggplot2实现同分组下两个并排堆叠条形图(不使用分面)
实现分组堆叠条形图的代码修改方案
你要实现每个color分组下并排展示dummy=a和dummy=b两个堆叠条形,只需调整映射关系和位置参数即可,修改后的完整代码如下:
library(tidyverse) diamonds %>% filter(color %in% c("D", "E", "F")) %>% # 优化dummy变量生成逻辑,避免硬编码行数导致的赋值错误 group_by(cut, color) %>% mutate(dummy = rep(c("a", "b"), length.out = n())) %>% ungroup() %>% ggplot(aes(x = color, y = price, fill = clarity, group = dummy)) + geom_col(width = 0.3, position = position_dodge(width = 0.5)) + facet_wrap(~cut) + # 隐藏dummy对应的分组图例,仅保留clarity的填充图例 guides(group = "none")
参数调整说明
- 新增
group = dummy的映射:告知ggplot需要按dummy变量对同一color下的条形做分组,是实现并排堆叠的核心 position_dodge(width = 0.5):控制同一color下两个堆叠条形的间距,数值越大间距越宽,可按需调整geom_col(width = 0.3):控制单个堆叠条形的宽度,避免相邻条形重叠- 优化了dummy变量的生成逻辑:按
cut和color分组后动态生成,不需要硬编码行数,适配不同过滤条件下的数据集
内容的提问来源于stack exchange,提问作者missgwolf
相关产品推荐
相关产品推荐

