2017-05-14 11 views
-1

Ich habe auf die Schaffung eines Balkendiagramm mit Fehlerbalken arbeiten Gruppenunterschiede für eine Datenmenge darstellen, die ich habe. Aber die Fehlerbalken kommen funky heraus, indem sie weiter oberhalb des Balkens und in der Mitte eines Balkens erscheinen.Erstellen von Fehlerbalken in R (ggplot2)

Mein Code:

ggplot(MRS_Hippo_NAA_Cre_Data_copy, aes(Type, Hippo_6_9NAACre, fill=Type)) + 
geom_bar(stat="summary", fun.y="mean", colour="black", size=.3) + 
geom_errorbar(aes(ymin=meanNAA-NAAse, ymax=meanNAA+NAAse), width=.2, 
position=position_dodge(.9)) + labs(x="Group", y="Right Posterior NAA/Cre") + 
scale_fill_manual(values=c("#0072B2", "#D55E00"), name="Group") + theme(text = 
element_text(size=18))` 

Dieser diese Grafik erzeugt:

plot

ich den Standardfehler berechnet, indem die folgende Funktion:

std <- function(x) sd(x)/sqrt(length(x)) 

x = Hippo_6_9NAACre

Nicht sicher, warum der Graph funky Fehlerbalken produziert. Kann jemand helfen oder Einsicht geben?

+0

Ich denke, 'mainNAA' und' NAAse' sind für beide Gruppen kombiniert. Natürlich rate ich nur, weil es kein reproduzierbares Beispiel gibt. – Axeman

+0

Ja, das ist richtig. Soll ich sie für die Gruppen trennen? – erikapnt

Antwort

1

Ich hatte vor kurzem ein ähnliches Problem. es zu lösen, vor allem Sie kann die Schicht

geom_errorbar(aes(ymin=meanNAA-NAAse, 
ymax=meanNAA+NAAse), width=.2, position=position_dodge(.9)) 

und eher verwenden, um eine Schicht mit der statsummary Funktion wieder zu entfernen. Dadurch werden die Fehlerbalken für die Gruppe getrennt erzeugt. Da die Balken den Standardfehler anzeigen sollen, müssen Sie eine entsprechende Funktion erstellen, die die erforderlichen Werte zurückgibt, die von statsummary verwendet werden können. Finden Sie unten ein Arbeitsbeispiel mit iris Datensatz.

library(ggplot2) 

## create a function for standard error that can be used with stat_summary 
# I created the function inspecting the results returned by 'mean_cl_normal' that is the   
# function used in some examples of stat_summary (see ?stat_summary). 

mean_se = function(x){ 
se = function(x){sd(x)/sqrt(length(x))} 
data.frame(y=mean(x), ymin=mean(x)+se(x), ymax=mean(x)-se(x)) 
} 

## create the plot 
p = ggplot(iris, aes(x = Species, y = Sepal.Length), stat="identity") + 
stat_summary(fun.y = mean, geom = "col", fill = "White", colour = "Black", width=0.5) + 
stat_summary(fun.data = mean_se, geom = "errorbar", width=0.2, size=1) 

# print the plot 
print(p) 
Verwandte Themen