首页 > 解决方案 > ggplot:使用cut()时如何在直方图条顶部添加计数

问题描述

我试图弄清楚如何在直方图箱顶部添加计数,因为我也使用了 cut()。

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

除了在每个垃圾箱顶部添加计数之外,我能够找出所有内容的代码。

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

    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.

标签: rggplot2geom-bar

解决方案


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

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

推荐阅读