2015-08-14 27 views
5

aşağıdaki çok benzer bir veri düzeyli histogram üzerinde standart hata çubukları çizmek çalışıyorum:ggplot errorbar pozisyon çok faktörlü problemleri

mth<-rep(c("June","July","August"),length.out=15) 
yr<-rep(c("1999","2000","2005","2009","2010"),each=3) 
X<-rnorm(15,mean=200,sd=100) 
lng<-rep(c(30,31,31),length.out=15) 
vrnc<-rnorm(15,mean=740,sd=300) 
df<-data.frame(mth,yr,vrnc,lng,X) 
dfi<-dim(df)[1] 
for(i in 1:dfi){ 
df$X.se[i]<-sqrt(df$vrnc[i]/df$lng[i]) 
} 

kullanıyorum hata çubukları yerleştirerek denedim this thread'da açıklanan stat_summary yöntemi. Ben de bu kodu kullanarak denedim

ggplot(df,aes(x=yr,y=X,fill=mth))+ 
    stat_summary(fun.y=mean, geom="bar",position=position_dodge(1)) + 
    stat_summary(fun.ymin=min,fun.ymax=max,geom="errorbar", 
     color="grey40",position=position_dodge(1), width=.2) + 
    geom_errorbar(data=df,aes(ymin=X-X.se,ymax=X+X.se,position="dodge",width=.2))+ 
    scale_fill_discrete("mth") 

:

ggplot(df,aes(x=yr,y=X,fill=mth))+ 
    geom_bar(stat="identity",position="dodge")+ 
    geom_errorbar(data=df,aes(ymin=X-X.se,ymax=X+X.se,position="dodge",width=.2)) 

ama sonuç her zaman tüm her yılın ortasında hata barları ile çıkar stat_summary Benim kod şöyle görünür.

enter image description here

ben yanlış yapıyorum bilmek istiyorum

. her hata çubuğu, verilerde başvurulan ay/yıl üstünde olmalıdır. Son zamanlarda bunu yapmak için

cevap

6

. gibi bir şey:

ggplot(df,aes(x=yr,y=X,fill=mth))+ 
    geom_bar(stat="identity", position = position_dodge()) + 
    geom_errorbar(aes(ymin=X-X.se, ymax=X+X.se), position = position_dodge(.9), width=.2) 
+2

fazla açıklama Sadece biraz: errorbars kaçmak değildi ana nedeni position' dışında * 'aes()' haritalama * belirtilmesi gerekir 'olmasıdır. –

+0

@RichAtMango: Bingo! Çok teşekkür ederim. –