将相对频率添加到直方图中的箱 - ggplot2

Add relative frequency to bins in histogram - ggplot2

我想将相对频率标签添加到由 ggplot() 函数制作的直方图的 bin 中。 我尝试使用 geom_text() 但我无法计算 bin 的相对频率,而且我无法将文本充分映射到顶部 bins。

如有帮助,我们将不胜感激。

这是一个可重现的例子:

df_CK <- data.frame(id = c(1:36), ck = c(121, 82, 100, 151, 68, 58, 95, 145, 64, 199, 101, 163,
       84, 57, 139, 60, 78, 94, 119, 104, 110, 113, 118, 203, 62, 83, 67, 93, 92, 110, 25, 123, 70, 48, 95, 42))

ggplot(df_CK, aes(x = ck, y = ..density..)) +
  geom_histogram(breaks = c(20, 40, 60, 80, 100, 120, 140, 160, 200, 220), fill = "coral1", colour = "grey60", size = .2) +
  theme(plot.title = element_text(size = 5, face = "bold", hjust = 0.5)) +
  theme_classic() +
  theme_bw(base_line_size = 0, base_rect_size = 0.25, base_size = 6) +
  ylab("Densidade") +
  scale_x_continuous(limits = c(0, 216), breaks = seq(0, 216, 9))
  # geom_text(aes(x = ck, label = ..prop.., y = ..density..),
  #           position = position_dodge(width = .5), vjust = -0.5, size = 2)

最好的, 海伦

在两个 geom 之间使用相同的统计数据。然后使用文档中列出的计算统计数据。

例如:

br <- c(20, 40, 60, 80, 100, 120, 140, 160, 200, 220)
ggplot(df_CK, aes(ck, stat(density))) +
  geom_histogram(breaks = br) +
  geom_text(
    aes(label = round(stat(count) / sum(stat(count)), 2)), 
    stat = 'bin', vjust = -1, breaks = br
  )