如何使用ggplot2绘制二项变量百分比条形图
How to plot binomial variable percentage bar plot with ggplot2
我在以下脚本中绘制了一个名为 "aborted" 的二项式变量 (0/1):
`ggplot(sab2, aes(x=locality,fill=factor(aborted))) + geom_bar() + scale_fill_manual() + scale_fill_grey(labels = c("aborted","alive")) + xlab("") + ylab("N empty fruits per plant") + guides(fill=guide_legend(title="Fruits vitality")) + facet_grid(~year) + theme_bw() + theme(legend.position = "bottom", panel.background = element_rect(fill = "white"), panel.grid.major = element_line(colour = "white"), axis.text.x=element_text(angle=90,hjust=1,vjust=0.5))`
结果是这样的:
如果我只想绘制中止百分比("aborted" 因子的“0”水平),我可以在我的代码中更改什么?
我可以获得类似于以下的图(但中止百分比):
谢谢!
用stat_summary
计算aborted
的平均值,也就是aborted
取值为0或1时中止的百分比。那么你也可以用stat_summary
与 mean_cl_boot
以获得自举的 95% 置信区间。这是一个假数据的例子:
library(scales)
set.seed(389)
sab2 = data.frame(locality=rep(1:6,each=100), aborted=sample(0:1, 600, replace=TRUE))
ggplot(sab2, aes(factor(locality), aborted)) +
stat_summary(fun.y=mean, geom="bar", fill="grey70") +
stat_summary(fun.data=mean_cl_boot, geom="errorbar", width=0.2) +
scale_y_continuous(labels=percent_format(), limits=c(0,1)) +
theme_bw()
这里的点数可能比条形图更好:
ggplot(sab2, aes(factor(locality), aborted)) +
stat_summary(fun.data=mean_cl_boot, geom="errorbar", width=0.2) +
stat_summary(fun.y=mean, geom="point", shape=21, fill="red", size=2) +
scale_y_continuous(labels=percent_format(), limits=c(0,1)) +
theme_bw()
或使用百分比值作为点标记:
ggplot(sab2, aes(factor(locality), aborted)) +
stat_summary(fun.data=mean_cl_boot, geom="errorbar", width=0.2, colour="grey60") +
stat_summary(fun.y=mean, geom="text", size=3, colour="red",
aes(label=paste0(sprintf("%1.1f", ..y..*100),"%"))) +
scale_y_continuous(labels=percent_format(), limits=c(0,1)) +
theme_bw()
我在以下脚本中绘制了一个名为 "aborted" 的二项式变量 (0/1):
`ggplot(sab2, aes(x=locality,fill=factor(aborted))) + geom_bar() + scale_fill_manual() + scale_fill_grey(labels = c("aborted","alive")) + xlab("") + ylab("N empty fruits per plant") + guides(fill=guide_legend(title="Fruits vitality")) + facet_grid(~year) + theme_bw() + theme(legend.position = "bottom", panel.background = element_rect(fill = "white"), panel.grid.major = element_line(colour = "white"), axis.text.x=element_text(angle=90,hjust=1,vjust=0.5))`
结果是这样的:
如果我只想绘制中止百分比("aborted" 因子的“0”水平),我可以在我的代码中更改什么? 我可以获得类似于以下的图(但中止百分比):
谢谢!
用stat_summary
计算aborted
的平均值,也就是aborted
取值为0或1时中止的百分比。那么你也可以用stat_summary
与 mean_cl_boot
以获得自举的 95% 置信区间。这是一个假数据的例子:
library(scales)
set.seed(389)
sab2 = data.frame(locality=rep(1:6,each=100), aborted=sample(0:1, 600, replace=TRUE))
ggplot(sab2, aes(factor(locality), aborted)) +
stat_summary(fun.y=mean, geom="bar", fill="grey70") +
stat_summary(fun.data=mean_cl_boot, geom="errorbar", width=0.2) +
scale_y_continuous(labels=percent_format(), limits=c(0,1)) +
theme_bw()
这里的点数可能比条形图更好:
ggplot(sab2, aes(factor(locality), aborted)) +
stat_summary(fun.data=mean_cl_boot, geom="errorbar", width=0.2) +
stat_summary(fun.y=mean, geom="point", shape=21, fill="red", size=2) +
scale_y_continuous(labels=percent_format(), limits=c(0,1)) +
theme_bw()
或使用百分比值作为点标记:
ggplot(sab2, aes(factor(locality), aborted)) +
stat_summary(fun.data=mean_cl_boot, geom="errorbar", width=0.2, colour="grey60") +
stat_summary(fun.y=mean, geom="text", size=3, colour="red",
aes(label=paste0(sprintf("%1.1f", ..y..*100),"%"))) +
scale_y_continuous(labels=percent_format(), limits=c(0,1)) +
theme_bw()