我一直试图制作百分比条形图,以显示三种不同背景下两种蝌蚪的死亡率(用于伪装研究) 我的数据集是:
[[1]]
campanha fundo sobreviventes especie intactos percentsob
1 5 light 10 Bs 9 66.66667
2 5 mixed 8 Bs 5 53.33333
3 5 dark 8 Bs 8 53.33333
4 6 light 15 Bs 13 100.00000
5 6 mixed 15 Bs 11 100.00000
6 6 dark 14 Bs 11 93.33333
7 5 light 7 Sm 5 46.66667
8 5 mixed 10 Sm 9 66.66667
9 5 dark 12 Sm 10 80.00000
10 6 light 14 Sm 6 93.33333
11 6 mixed 14 Sm 6 93.33333
12 6 dark 15 Sm 9 100.00000
我的脚本是(文件名= odonatapint,15 =每次试用的个人总数):
odonatapint$percentsob<-odonatapint$sobreviventes*100/15
ggplot(data=odonatapint,aes(x=fundo,y=percentsob,fill=especie)) +
geom_bar(method="mean",stat="identity",position="dodge") +
scale_fill_manual(values=c("#999999", "#000000")) +
xlab("Background type (natural)") +
ylab("Tadpoles surviving (%)")
但是我注意到图表显示每个类别的最高值而不是平均值(我试图发布图表但我不允许因为我刚注册)。
我应该怎么做才能修复它?如何在显示平均值后添加误差条?
答案 0 :(得分:1)
我对geom_bar()知之甚少,所以这需要稍微不同的方法,但它适用于示例数据集。它通过引导计算错误条值,对于较大的数据集,这可能是计算密集的。
ggplot(data=odonatapint,aes(x=fundo,y=percentsob,fill=especie)) +
stat_summary(geom='bar', fun.y='mean', position='dodge') +
stat_summary(geom='errorbar', fun.data='mean_cl_boot', position='dodge')
答案 1 :(得分:1)
这就是我所做的,首先计算平均值和标准差(误差线)
library(dplyr)
odonatapint <- odonatapint %>% group_by(fundo,especie) %>% mutate(mean = mean(percentsob), sd = sd(percentsob))
然后使用ggplot绘图(使用geom_bar
绘制第一个绘图条,然后使用geom_errorbar
添加误差线
ggplot(data=odonatapint,aes(x=fundo,y=mean,fill=especie)) +
geom_bar(method="mean",stat="identity",position=position_dodge()) +
geom_errorbar(aes(ymax = mean + sd, ymin = mean - sd), position = position_dodge()) +
scale_fill_manual(values=c("#999999", "#000000")) +
xlab("Background type (natural)") +
ylab("Tadpoles surviving (%)")
生成的数字如下所示