如何在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")
输出:
我正在尝试使用 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")
输出: