R函数中带有频率数的分组条形图
Grouped bar plot with frequency numbers in a R function
我想制作一个函数来绘制数据库中某个变量的条形图,并按参与者的性别分组。我找到了一种使用显示比例的图表来执行此操作的方法:
library(ggplot2)
datab <- data.frame(
value=sample(c(1,2,3,4,5), 50, replace = TRUE),
value2=sample(c(1,2,3,4,5), 50, replace = TRUE),
Sex=factor(x=rep(c(1,1,1,0,0),10), labels=c("M","F"))
)
graph_percentages <- function(varijabla){
ggplot(datab, aes(x= datab[[varijabla]], y=stat(prop), fill=Sex, group=Sex)) +
geom_bar(position = "dodge", color= "black") +
geom_text(position = position_dodge(1), size = 2.3, aes(label= scales::percent(..prop..), y= ..prop..), stat="count", vjust = -0.5)+
xlab(colnames(datab[,varijabla])) + ylab(NULL)
}
graph_percentages("value")
但是,我对如何制作一个显示频率而不是比例的类似函数感到困惑。
主要问题是在 "geom_text" 中我无法更改 "y=" 以显示频率。至少我还没有找到方法。
stat(count)
也许您正在寻找什么?
ggplot(datab, aes(x= datab[[varijabla]], y=stat(count), fill=Sex, group=Sex)) +
geom_bar(position = "dodge", color= "black") +
geom_text(position = position_dodge(1), size = 2.3, aes(label= ..count.., y= ..count..), stat="count", vjust = -0.5)+
xlab(colnames(datab[,varijabla])) + ylab(NULL)
为了与更新的语法保持一致,您也可以在对 geom_text()
的调用中将 ..count..
替换为 stat(count)
,即:
geom_text(position = position_dodge(1), size = 2.3, aes(label= stat(count), y= stat(count)), stat="count", vjust = -0.5)
我想制作一个函数来绘制数据库中某个变量的条形图,并按参与者的性别分组。我找到了一种使用显示比例的图表来执行此操作的方法:
library(ggplot2)
datab <- data.frame(
value=sample(c(1,2,3,4,5), 50, replace = TRUE),
value2=sample(c(1,2,3,4,5), 50, replace = TRUE),
Sex=factor(x=rep(c(1,1,1,0,0),10), labels=c("M","F"))
)
graph_percentages <- function(varijabla){
ggplot(datab, aes(x= datab[[varijabla]], y=stat(prop), fill=Sex, group=Sex)) +
geom_bar(position = "dodge", color= "black") +
geom_text(position = position_dodge(1), size = 2.3, aes(label= scales::percent(..prop..), y= ..prop..), stat="count", vjust = -0.5)+
xlab(colnames(datab[,varijabla])) + ylab(NULL)
}
graph_percentages("value")
但是,我对如何制作一个显示频率而不是比例的类似函数感到困惑。 主要问题是在 "geom_text" 中我无法更改 "y=" 以显示频率。至少我还没有找到方法。
stat(count)
也许您正在寻找什么?
ggplot(datab, aes(x= datab[[varijabla]], y=stat(count), fill=Sex, group=Sex)) +
geom_bar(position = "dodge", color= "black") +
geom_text(position = position_dodge(1), size = 2.3, aes(label= ..count.., y= ..count..), stat="count", vjust = -0.5)+
xlab(colnames(datab[,varijabla])) + ylab(NULL)
为了与更新的语法保持一致,您也可以在对 geom_text()
的调用中将 ..count..
替换为 stat(count)
,即:
geom_text(position = position_dodge(1), size = 2.3, aes(label= stat(count), y= stat(count)), stat="count", vjust = -0.5)