我一直在尝试绘制一个堆积条形图,每个单独的条形图上面都有一个错误条,而不是条形图中的每个部分。我可以设法为每个部分绘制所有错误栏,但没有找到绘制单个错误栏的解决方案。
这是数据框df
Sp Type Or Rate se
1 H Dis Bottom 14.5454545 8.0403025
2 H Dis Top 2.7272727 1.9403407
3 H Dis WP 0.9090909 0.9090909
4 H He Bottom 5.4545455 1.4845392
5 H He Top 15.4545455 5.0797135
6 H He WP 0.0000000 0.0000000
7 H HeDis Bottom 9.0909091 3.8330638
8 H HeDis Top 8.1818182 4.1659779
9 H HeDis WP 3.6363636 2.0100756
10 N Dis Bottom 19.0909091 8.9329715
11 N Dis Top 0.0000000 0.0000000
12 N Dis WP 0.0000000 0.0000000
13 N He Bottom 22.7272727 7.0743137
14 N He Top 0.0000000 0.0000000
15 N He WP 3.6363636 2.7773186
16 N HeDis Bottom 14.5454545 5.2835139
17 N HeDis Top 10.0000000 4.3808583
18 N HeDis WP 0.0000000 0.0000000
这是我的脚本绘制堆积条形图,其中条形图中的每个部分都有误差条(每个错误条的位置不正确但这并不重要,因为这不是我想要的):
dodge<- position_dodge(width = 0.65)
cols <- c(Top="darkgrey",Bottom="lightgrey", Well_plate="white")
Stacked_plot_bis<-ggplot(df,
aes(x=factor(Type),y=Rate,fill=factor(Or))) +
geom_bar(aes(width=.65), stat="identity",colour="black")+
geom_errorbar(aes(ymin=Rate-se,ymax=Rate+se), position="dodge",colour="black",
width=.65)+
scale_fill_manual(values = cols)+
facet_grid(. ~ Sp)
这会绘制每个条形中所有部分的误差线,如何在每个单独的条形图上绘制单个整体误差条,但不考虑各个部分,而只考虑每个类型的整体值?
非常感谢任何帮助!
答案 0 :(得分:3)
您可以创建一个虚拟数据集(我用data.table
包完成)来计算mean(se)
(虽然我不认为这是最好的做法)和将其绘制如下(我已经改变了误差线的颜色,因此你可以更好地看到它们)
dodge<- position_dodge(width = 0.65)
cols <- c(Top="darkgrey",Bottom="lightgrey", Well_plate="white")
library(data.table)
Dummy <- data.table(df)[, list(Rate = sum(Rate), se = mean(se), Or = "WP"), by = c("Sp", "Type")]
ggplot(df,aes(x=factor(Type),y=Rate,fill=factor(Or))) +
geom_bar(aes(width=.65), stat="identity",colour="black")+
geom_errorbar(data = Dummy, aes(ymax = Rate +se, ymin= Rate -se), position="dodge", colour="red", width=.65)+
scale_fill_manual(values = cols)+
facet_grid(. ~ Sp)