2

我一直在尝试绘制一个堆积条形图,在每个单独的条形图顶部有一个错误条,而不是在条形图中的每个部分绘制,但没有成功。我可以设法为每个部分绘制所有误差线,但没有找到绘制单个误差线的解决方案。

这是数据框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)

这将绘制每个条形内所有部分的误差条,如何在每个单独的条形顶部绘制一个整体误差条,它不考虑部分,而只考虑每个类型的整体值?

任何帮助将不胜感激!

4

1 回答 1

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)

在此处输入图像描述

于 2014-04-23T09:44:33.873 回答