如何在ggplot中为stat_summary的mean_cl_boot结果添加均值数值标签?
给抖动图的均值添加数值标签
没问题,我来帮你搞定这个均值标签的问题!你已经用mean_cl_boot画出了带置信区间的均值线,现在只需要再添加一层stat_summary来生成均值的数值标签就可以了。
核心思路是用stat_summary专门计算均值,然后用geom="text"或者geom="label"把数值显示在均值点的附近。下面是修改后的完整代码:
lisbondata %>% ggplot(aes(q1b, exage)) + geom_jitter(alpha=0.2) + # 先画抖动点,避免标签被覆盖 stat_summary(fun.data = "mean_cl_boot", colour="red") + # 你的原有置信区间 stat_summary( fun = mean, # 指定计算均值 geom = "text", # 用文本显示标签 colour = "darkred", # 标签颜色 vjust = -1.5, # 把标签向上移,避免和置信区间重叠 aes(label = round(..y.., 1)) # 格式化均值,保留1位小数 ) + labs(title = "Age distribution between Yes/No votes", x = "Vote", y = "Age") + theme_bw()
一些可调整的细节:
- 如果想要标签带浅色背景框更清晰,可以把
geom="text"改成geom="label" - 调整
vjust的数值可以改变标签的上下位置(比如vjust=2会把标签移到均值点下方) - 修改
round(..y.., 1)里的数字可以调整均值的小数位数,比如round(..y.., 0)显示整数 - 可以自定义标签的字体大小,比如加上
size=4参数
这样修改后,每个分组的均值数值就会清晰地显示在红色置信区间的上方啦!
内容的提问来源于stack exchange,提问作者Eliot Leonard




