R语言ggplot柱状图如何在柱顶添加计数标注
ggplot2 柱状图柱顶添加计数标注的简便方法
不需要提前做分组聚合生成计数列,直接调用ggplot2内置的统计变换就能实现,代码更简洁,也不会因为原始数据变动需要重新计算聚合表。
最简实现
直接在原有绘图代码上叠加文本层即可:
library(ggplot2) g <- ggplot(mpg, aes(class)) g + geom_bar() + geom_text(stat = "count", aes(label = after_stat(count)), vjust = -0.3)
关键参数说明
stat = "count":让文本层和geom_bar()使用相同的计数逻辑,自动按x轴的class类别分组统计观测数,完全省去手动聚合的步骤aes(label = after_stat(count)):直接调用统计过程自动生成的计数值作为标注文本,适配ggplot2 3.3.0及以上的新版本;老版本可替换为aes(label = ..count..),效果一致vjust = -0.3:将标注位置调整到柱顶上方,避免和柱体重叠,可根据显示效果调整数值大小,数值越大标注离柱顶越远- 如果需要带边框的文本标注,把
geom_text()换成geom_label()即可,其余参数不用改 - 如果标注被y轴顶部截断,添加
scale_y_continuous(expand = expansion(mult = c(0, 0.1)))即可自动在顶部预留10%的显示空间,无需手动设置y轴上限
如果是绘制堆叠/分面柱状图,只需要给文本层添加对应的位置参数即可,比如堆叠图加position = position_stack(vjust = 0.5)就能把标注放在每个柱段的中间,同样不需要提前聚合数据。
内容的提问来源于stack exchange,提问作者Eisen
相关产品推荐
相关产品推荐

