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

如何用ggplot2的stat_summary搭配geom_col生成独立的求和汇总条形

解决方案

你原有代码无法生成独立Total条形的核心原因是stat_summary的分组没有被ggplot识别为和两个原始Item平级的第三类,显式指定分组映射即可实现需求,无需预处理原始数据:

library(ggplot2)

ggplot(data = df, aes(x = Year, y = Value)) +
  # 绘制两个原始分类的条形
  geom_col(
    aes(fill = Item, group = Item),
    position = position_dodge(width = 0.9)
  ) +
  # 绘制汇总的Total条形,指定group=3作为第三个独立分组
  stat_summary(
    fun = sum,
    geom = "col",
    aes(fill = "Total", group = 3),
    position = position_dodge(width = 0.9)
  ) +
  # 统一配置填充色和图例
  scale_fill_manual(
    name = "Item",
    values = c("Soybeans" = "#F8766D", "Pulses, Total" = "#00BFC4", "Total" = "#7CAE00"),
    breaks = c("Soybeans", "Pulses, Total", "Total")
  )

关键说明

  • 给stat_summary添加group = 3的映射后,ggplot会将其识别为和两个Item分组平级的第三类,position_dodge会自动为三个条形分配并排的位置,不会出现重叠问题。
  • 如果你不想手动指定填充色,把scale_fill_manual替换为scale_fill_discrete(name = "Item", breaks = c("Soybeans", "Pulses, Total", "Total"))即可自动生成配色。
  • 最终输出效果和你用dplyr预处理数据得到的结果完全一致,不需要修改原始数据集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 16:09:02