如何在ggplot中创建频率百分比直方图?

How to create a histogram of frequencies in percentage in ggplot?

我正在尝试使用 geom_histogram 在 ggplot 2 中创建频率直方图,但此命令仅 returns 观察次数而不是百分比频率。我还希望百分比值位于条形图的顶部。

我觉得奇怪的是 ggplot 没有来自原生 hist r-base 命令的 frequency=TRUE 命令。

在 ggplot 中有什么简单的方法可以做到这一点吗?我知道 hist 会这样做,但是 ggplot 会让我用这些图做其他事情。

我试试

df<-data.frame(corr=runif(100, min = -1, max = 1))

#View(df)

ggplot(data=df, aes(x=corr))+
  geom_histogram(color="darkblue", fill="lightblue")

或者,我根据这个答案 Show percent % instead of counts in charts of categorical variables 尝试了以下命令,但在我看来,使用的版本很旧并且在 R 4.1.1

中响应不佳
ggplot(data=df, aes(x=corr))+
  geom_bar(aes(y = (((..count..)/sum(..count..))*100)))
  scale_y_continuous(labels = percent))

您可以使用此代码:

library(tidyverse)
library(scales)
df<-data.frame(corr=runif(100, min = -1, max = 1))

ggplot(df, aes(x = corr)) + 
  geom_histogram(fill = "blue", col = "black")+ 
  scale_y_continuous(breaks = seq(0,10,1),labels = paste(seq(0, 10, by = 1), "%", sep = ""))+
  geom_text(aes(y = (..count..),label =  scales::percent((..count..)/sum(..count..))), stat="bin",colour="red",vjust=-1, size = 3) +
  ylab("Percentage")

输出: