如何用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
相关产品推荐
相关产品推荐

