Gentile utente StackOverflow,Barplot raggruppato in R con barre di errore
Vorrei disegnare un barcode raggruppato con barre di errore. Ecco il tipo di figura sono stato in grado di ottenere fino ad oggi, e questo è ok per quello che mi serve:
E qui è il mio script:
#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)
Il problema è che ho bisogno di fare questo per 50 geni e 4 specie, quindi la mia sceneggiatura sarà super super lunga e immagino che non sia ottimizzata ... Ho provato a trovare aiuto here ma non riesco a capire un modo migliore per fai quello che mi piacerebbe. Se non avessi bisogno di barre di errore, avrei potuto adattare this script ma la parte difficile è combinare ggplot con bellissimi bar e barre di errore! ;)
Se hai qualche idea per ottimizzare il mio script, lo apprezzerei davvero! :)
Grazie mille!
fate attenzione facendo 't (trama)' voi completamente invertita gene;) –