如何使ggplot中geom_text显示在柱状图条形正上方?
解决方法
要让计数标签自动显示在条形正上方,只需调整stat_count的位置参数与y轴映射逻辑,具体修改如下:
- 移除原代码中的
position_fill(),改用position_stack(vjust = 1.05),让标签定位在条形顶部外侧 - 在
stat_count的aes里明确指定y = stat(count),确保标签基于条形的实际高度定位
修改后的完整代码:
sur %>% ggplot(aes(y = fct_infreq(no_lifetime_bite))) + geom_bar() + ylab("No of bites") + xlab("Body part") + ggtitle("Anatomical sites of animal bites") + stat_count(geom = "text", aes(y = stat(count), label = stat(count)), position = position_stack(vjust = 1.05))
细节调整
- 若标签和条形顶部的距离不符合预期,可以修改
vjust的数值:数值越大,标签离条形顶部越远;数值越小则越近 - 如果是多组柱状图场景,可替换为
position_dodge(width = 0.9)配合vjust来实现分组标签的对齐
内容的提问来源于stack exchange,提问作者Rakesh Chand
相关产品推荐
相关产品推荐

