由于我也使用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.
答案 0 :(得分:1)
您不需要使用stat = "count"
来计算频率,您已经在数据中包含了它们,实际上,您已经在aes(x = output, y = Freq, fill=output)
中使用了它们。因此,您可以这样做:
geom_text(aes(label=Freq), vjust=-1, size=3)