在 ggplot 直方图中显示百分比

Show percent in ggplot histogram

我用百分比绘制直方图(效果很好)但是当我尝试打印百分比值时,y 轴的比例不再正确。

百分比直方图的代码(效果很好)如下:

data_impact_final %>%
  ggplot(aes(x = time_to_treat_month)) +
  geom_histogram(aes(y = (..count..)/sum(..count..)),binwidth=6) +
  scale_y_continuous(labels = scales::percent)

enter image description here

但是,当我尝试使用 stat_bin 在图表上打印百分比时,y 轴的比例不再正确。这是我用来打印百分比的代码:

data_impact_final %>%
  ggplot(aes(x = time_to_treat_month)) +
  geom_histogram(aes(y = (..count..)/sum(..count..)),binwidth=6) +
  stat_bin(binwidth=6, geom='text', color='white', aes(label = scales::percent((..count..)/sum(..count..))),position=position_stack(vjust = 0.5))+
  scale_y_continuous(labels = scales::percent)

enter image description here

感谢您的帮助

问题是标签位于 y=..count..。要解决您的问题,请在 stat_bin 中也使用 y=..count../sum(..count..)

使用 ggplot2::mpg 作为示例数据:

library(ggplot2)
library(dplyr)

mpg %>%
  ggplot(aes(x = hwy)) +
  geom_histogram(aes(y = (..count..)/sum(..count..)),binwidth=6) +
  scale_y_continuous(labels = scales::percent)

mpg %>%
  ggplot(aes(x = hwy)) +
  geom_histogram(aes(y = (..count..)/sum(..count..)),binwidth=6) +
  stat_bin(binwidth=6, geom='text', color='white', aes(y = ..count../sum(..count..), label = scales::percent((..count..)/sum(..count..))),position=position_stack(vjust = 0.5))+
  scale_y_continuous(labels = scales::percent)