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

如何在ggplot分组条形图中添加总数值统计条?

解决思路:添加总计分组条形到现有图表

1. 构造包含总计的数据

首先需要把所有城市的Cases按Type汇总,生成“总计”数据行,再合并到原数据框里。这里提供两种实现方式:

方式一:用dplyr简化操作

library(dplyr)
library(ggplot2)

# 原数据
df <- data.frame("City"=c("Vienna","Vienna","London","London","Berlin", "London", "Berlin","Berlin","Vienna","Vienna","Vienna", "Vienna", "Berlin","Vienna","Vienna","Vienna"),"Type"=c("repeat","once","repeat","once","repeat","once", "repeat","once","repeat","once","repeat","repeat","repeat","repeat","repeat","once"),"Cases"=c(10,20,30,40,50,60,70,80,90,10,20,30,40,50,60,40))

# 按Type汇总Cases,生成总计行
total_df <- df %>%
  group_by(Type) %>%
  summarize(City = "Total", Cases = sum(Cases)) %>%
  ungroup()

# 合并原数据和总计数据
df_with_total <- bind_rows(df, total_df)

方式二:基础R实现

# 原数据
df <- data.frame("City"=c("Vienna","Vienna","London","London","Berlin", "London", "Berlin","Berlin","Vienna","Vienna","Vienna", "Vienna", "Berlin","Vienna","Vienna","Vienna"),"Type"=c("repeat","once","repeat","once","repeat","once", "repeat","once","repeat","once","repeat","repeat","repeat","repeat","repeat","once"),"Cases"=c(10,20,30,40,50,60,70,80,90,10,20,30,40,50,60,40))

# 计算各Type的总Cases
repeat_total <- sum(df$Cases[df$Type == "repeat"])
once_total <- sum(df$Cases[df$Type == "once"])

# 构造总计数据框
total_df <- data.frame(City = c("Total", "Total"),
                       Type = c("repeat", "once"),
                       Cases = c(repeat_total, once_total))

# 合并数据
df_with_total <- rbind(df, total_df)

2. 绘制包含总计的分组条形图

用合并后的数据框绘图,x轴会自动包含Total类别,和其他城市的条形并列。如果想突出总计条,可以给它加个黑色边框:

ggplot(df_with_total, aes(fill=Type, x=City, y=Cases)) +
  geom_bar(position="dodge", stat="identity") +
  # 给总计条添加黑色边框,方便区分
  geom_bar(data = total_df, aes(fill=Type, x=City, y=Cases),
           position="dodge", stat="identity", color="black", size=1)

这样生成的图表里,Total分组条的每个颜色块高度,对应所有城市该Type的Cases总和,和原图表的填充逻辑完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 22:50:12