Gruppierten barplot in R mit Fehlerbalken

Ich würde gerne zeichnen einen gruppierten barplot mit Fehlerbalken. Hier ist die Art von Figur, die ich haben in der Lage zu bekommen bis jetzt, und das ist ok für das, was ich brauche:

Gruppierten barplot in R mit Fehlerbalken

Und hier ist mein Skript:

#create dataframe
Gene<-c("Gene1","Gene2","Gene1","Gene2")
count1<-c(12,14,16,34)
count2<-c(4,7,9,23)
count3<-c(36,22,54,12)
count4<-c(12,24,35,23)
Species<-c("A","A","B","B")
df<-data.frame(Gene,count1,count2,count3,count4,Species)
df

mean1<-mean(as.numeric(df[1,][c(2,3,4,5)]))
mean2<-mean(as.numeric(df[2,][c(2,3,4,5)]))
mean3<-mean(as.numeric(df[3,][c(2,3,4,5)]))
mean4<-mean(as.numeric(df[4,][c(2,3,4,5)]))
Gene1SpeciesA.stdev<-sd(as.numeric(df[1,][c(2,3,4,5)]))
Gene2SpeciesA.stdev<-sd(as.numeric(df[2,][c(2,3,4,5)]))
Gene1SpeciesB.stdev<-sd(as.numeric(df[3,][c(2,3,4,5)]))
Gene2SpeciesB.stdev<-sd(as.numeric(df[4,][c(2,3,4,5)]))

ToPlot<-c(mean1,mean2,mean3,mean4)

#plot barplot
plot<-matrix(ToPlot,2,2,byrow=TRUE)   #with 2 being replaced by the number of genes!
tplot<-t(plot)
BarPlot <- barplot(tplot, beside=TRUE,ylab="count",
                names.arg=c("Gene1","Gene2"),col=c("blue","red"))

#add legend
legend("topright", 
       legend = c("SpeciesA","SpeciesB"), 
       fill = c("blue","red"))

#add error bars
ee<-matrix(c(Gene1SpeciesA.stdev,Gene2SpeciesA.stdev,Gene1SpeciesB.stdev,Gene2SpeciesB.stdev),2,2,byrow=TRUE)*1.96/sqrt(4)   
tee<-t(ee)
error.bar(BarPlot,tplot,tee)

Das problem ist, dass ich das tun müssen, für 50 Gene, und 4 Arten, also mein Skript bekommen, super super lang und ich denke, dies ist nicht optimiert... ich habe versucht, um Hilfe zu finden hier aber ich kann nicht herausfinden, einen besseren Weg, das zu tun, was ich möchte. Wenn ich nicht brauchen, Fehlerbalken konnte ich anpassen dieses Skript aber der schwierige Teil ist zu mischen ggplot schöne barplots und Fehler bars! 😉

Wenn du keine Ahnung hast, optimieren mein Skript, ich würde wirklich zu schätzen! 🙂

Vielen Dank!

Vorsicht-by-doing - t(plot) Sie komplett vertauscht das gen 😉

InformationsquelleAutor tlorin | 2015-04-21

Schreibe einen Kommentar