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

如何用ggplot添加仅含指定文本(如TOTAL=60)的简单图例

自定义ggplot柱状图图例为仅含总计文本的方框

问题背景

现有如下数据框及ggplot柱状图代码:

df = data.frame(a = c('person1','person2','person3'),
                b = c(10,20,30))

ggplot(df)+aes(x=a,y=b,fill=b)+
  geom_bar(stat='identity')

需要将图例修改为仅包含“TOTAL = 60”文本的方框。

实现方法

通过自定义填充映射、调整图例参数实现需求,具体代码如下:

library(ggplot2)

# 定义数据框并计算总和
df = data.frame(a = c('person1','person2','person3'),
                b = c(10,20,30))
total <- sum(df$b)

# 绘图并自定义图例
ggplot(df, aes(x = a, y = b, fill = "total")) +
  geom_bar(stat = 'identity') +
  # 设置柱子颜色和图例标签
  scale_fill_manual(values = "steelblue", labels = paste("TOTAL =", total)) +
  # 调整图例:隐藏标题、去掉颜色块、缩小图例键
  guides(fill = guide_legend(title = NULL,
                             override.aes = list(fill = NA),
                             keywidth = unit(0, "mm"),
                             keyheight = unit(0, "mm"))) +
  # 给图例添加边框,调整文本边距
  theme(legend.background = element_rect(color = "black"),
        legend.text = element_text(margin = margin(r = 12, l = 12)))

代码说明

  • 将fill映射到固定字符串"total",确保仅生成单个图例项
  • scale_fill_manual指定柱子填充色,同时把图例标签替换为总计文本
  • guides参数中,隐藏图例标题,通过override.aes移除图例内的颜色块,缩小图例键尺寸以不占用空间
  • theme配置给图例添加黑色边框,调整文本边距让内容在方框内显示更合理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 18:50:41