You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 07:36:05