geom_histogram中stat_bin标签位置:如何在position_nudge引用..count..
解决直方图垂直标签贴近柱子顶部的问题
你的代码首先有个语法小错误:ggplot(aes(x = values)漏掉了闭合括号,先修正这个基础问题。针对标签位置过高的问题,这里提供两种实用的解决方案,适配不同高度的柱子:
方法1:对齐参数直接贴合柱子顶部
利用after_stat()引用柱子高度,配合对齐参数让标签紧贴顶部:
library(tidyverse) as_tibble(input_values) %>% ggplot(aes(x = values)) + geom_histogram(stat = "bin") + stat_bin( geom = "text", angle = 90, family = "Calibri", aes(y = after_stat(count), label = after_stat(count)), hjust = 1, # 垂直文字右对齐,刚好贴在柱子顶部右侧边缘 vjust = 0.2 # 微调避免文字和柱子顶部完全重合 )
方法2:按比例偏移适配不同柱子高度
如果希望标签稍微往柱子内侧靠一点,直接在y轴位置按比例缩小,自动适配所有柱子:
library(tidyverse) as_tibble(input_values) %>% ggplot(aes(x = values)) + geom_histogram(stat = "bin") + stat_bin( geom = "text", angle = 90, family = "Calibri", aes(y = after_stat(count) * 0.95, label = after_stat(count)), hjust = 0, # 垂直文字左对齐,对应柱子内部靠近顶部的位置 vjust = 0.5 )
原方法失效的原因
你之前尝试的position_nudge(y = ..count..*-0.1)没用,是因为position_nudge仅支持固定数值偏移,不能引用..count..这类统计变量。而直接在aes(y = ...)里用after_stat(count)做比例计算,是ggplot2原生支持的动态变量引用方式,能完美适配不同高度的柱子。
内容的提问来源于stack exchange,提问作者nadja
相关产品推荐
相关产品推荐

