2014-04-22 26 views
1

我一直在尝试没有任何成功,在每个单独的栏顶部绘制带单个错误栏的堆积条形图,而不是针对条形内的每个部分。我可以设法为每个部分绘制所有错误栏,但没有找到解决方案来绘制单个错误栏。堆积条形图上的单个错误栏ggplot

这里是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) 

此提请各酒吧内所有部分的错误吧我怎么绘制一个总体误差栏上不考虑每个个体条的顶部部分,但只有每个类型的整体价值?

任何帮助将非常感谢!

回答

2

您可以创建一个Dummy数据集(我使用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) 

enter image description here

+0

非常感谢大卫。我曾尝试使用不同数据框中的数据来绘制错误栏,但总是收到错误消息。感谢您的回答,我修改了我的脚本,特别是通过使用data.table并且工作。 – GQU