ggplot:使用cut()时如何在直方图条上添加计数数量

时间:2019-07-18 23:04:48

标签: r ggplot2 geom-bar

由于我也使用cuts(),我试图弄清楚如何在直方图箱的顶部添加计数。

年龄是我数据集中的变量之一(连续,范围23〜99),我需要产生一个带有8个bin的直方图,每个bin表示一个组合的年龄段(<30、30-39、40-49 ,50-59、60-69、70-79,“ 80-89”,“ 90-99”)。

我能够找出除 以外的所有代码,以便将计数添加到每个bin的顶部。

我通常用于添加计数的代码是这样的:

    geom_text(stat= "count", aes(label=..count..), vjust=-1, size=3)         
    + ylim(c(0,300))

但是,在这种情况下,我认为stat =“ count”不起作用。

我在下面显示的代码除了最后两行(我尝试添加计数)外都可以正常工作。

感谢大家的帮助!

    output <- cut(df$age, breaks = seq(20,100, by= 10), labels = c("
    <30","30-39","40-49", "50-59","60-69","70-79","80-89","90-99"))


    table(output) %>% 
      as.data.frame() %>% 
      ggplot(aes(x = output, y = Freq, fill=output)) + 
      geom_col() +
      scale_fill_manual(values=c("firebrick1", "chocolate1", 
    "yellow1", "springgreen3", "steelblue1",
    "navyblue", "darkorchid1", "darkmagenta"),
                 name="Age group",
                 labels=c("<30","30-39","40-49", "50-59",
    "60-69","70-79","80-89","90-99")) +
    theme(legend.title = element_blank()) +
    theme(legend.position = "none") +
    labs(title="Histogram for Age") +
    labs(x="Age Group", y="Frequency") +
      theme(plot.title = element_text(hjust = 0.5)) +
       geom_text(stat= "count", aes(label=..count..), vjust=-1,         
    size=3) +
    ylim(c(0,300))

    Error: stat_count() must not be used with a y aesthetic.

1 个答案:

答案 0 :(得分:1)

您不需要使用stat = "count"来计算频率,您已经在数据中包含了它们,实际上,您已经在aes(x = output, y = Freq, fill=output)中使用了它们。因此,您可以这样做:

geom_text(aes(label=Freq), vjust=-1, size=3)