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

如何在单个图表中混合堆叠条形图与非堆叠条形图?

实现堆叠与非堆叠混合的条形图

要在单个图表里同时实现堆叠和非堆叠条形图,核心是先整理数据结构,明确哪些指标属于堆叠分组、哪些是独立条形,再通过绘图参数区分两种模式。

第一步:数据预处理

先把原始数据中的空白值转为数值类型,同时给每个指标标记所属的主分组、是否为堆叠子项:

library(ggplot2)
library(dplyr)

# 原始数据
Indicators <- c("Z","X","C","NO C","NA C","LOW C","HIGH C","D","E","F","G","H","LOW H","MED H","HIGH H",
                "I","LOW I","MED I","HIGH I","J","LOW J","MED J","HIGH J")

Class_1 <- c(0.44,0.01,"",0.6,0.13,0.11,0.16,0.08,0.01,0.14,0.21,"",0.55,
0.23,0.22,"",0.4,0.31,0.29,"",0.41,0.23,0.36)

data <- data.frame(Indicators, Class_1)

# 把空白值转为NA,Class_1转为数值类型
data$Class_1 <- as.numeric(data$Class_1)

# 添加分组标记列
data <- data %>%
  mutate(
    # 标记主分组:堆叠子项归到对应的主分组,独立指标的分组就是自身
    main_group = case_when(
      grepl("C$", Indicators) | Indicators == "C" ~ "C",
      grepl("H$", Indicators) | Indicators == "H" ~ "H",
      grepl("I$", Indicators) | Indicators == "I" ~ "I",
      grepl("J$", Indicators) | Indicators == "J" ~ "J",
      TRUE ~ Indicators
    ),
    # 标记是否为堆叠子项
    is_stack = ifelse(Indicators != main_group, TRUE, FALSE)
  )

# 给主分组分配x轴位置,保证堆叠项对齐同一位置
main_groups <- unique(data$main_group)
data$x_pos <- match(data$main_group, main_groups)

第二步:绘制混合条形图

通过position参数分别设置堆叠和非堆叠模式,让子项在同一x位置堆叠,独立条形占据专属x位置:

ggplot(data, aes(x = x_pos, y = Class_1)) +
  # 绘制堆叠子项
  geom_bar(
    data = filter(data, is_stack),
    aes(fill = Indicators),
    stat = "identity",
    position = "stack",
    width = 0.7
  ) +
  # 绘制独立非堆叠条形
  geom_bar(
    data = filter(data, !is_stack & !is.na(Class_1)),
    aes(fill = Indicators),
    stat = "identity",
    position = "identity",
    width = 0.7
  ) +
  # 设置x轴标签为主分组名称
  scale_x_continuous(breaks = seq_along(main_groups), labels = main_groups) +
  labs(
    x = "指标分组",
    y = "数值",
    fill = "具体指标",
    title = "堆叠与非堆叠混合条形图"
  ) +
  theme_minimal()

关键说明

  • 堆叠子项会被对齐到对应主分组的x轴位置,通过position="stack"实现堆叠;独立条形则用position="identity"保持单独显示。
  • 可通过调整width参数统一堆叠组与独立条形的宽度,让图表更协调。

内容的提问来源于stack exchange,提问作者Bruh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 19:20:19