2017-07-27 13 views
-1

Ich habe einen Datenrahmen, der wie folgt aussieht. Ich habe die Variable ToF.Freq1_Hit1, ToF.Freq1_Hit2, ToF.Freq1_Hit3 .... und so weiter bis ToF.Freq20_Hit5. (Also 20 Freq und jeweils 5 Treffer). data frame. Der Datenrahmen ist bereits geschmolzen unter Verwendung melt().ggplot für mehrere Variablen (Aufteilen von Variablen)

Ich versuche, Mittelwert und SD für jede Freq zu plotten. Ich habe versucht das unten, aber es ist wirklich vollgestopft. Irgendwelche Ideen, wie man das verbessert.

p4 <- ggplot(B_TOF_melt, aes(x = variable, y = value)) + geom_boxplot() + theme(axis.text.x = element_text(angle = 90)) +ggtitle("Geraete B TOF means")

Gibt es eine Möglichkeit innerhalb ggplot die Variablen als ToF.Freq1 aufzuzuteilen: 20 und die Hits getrennt. ?

Vielen Dank dafür.

+0

Können Sie ein Beispiel Ihrer Daten hinzufügen? – cmaher

+2

Veröffentlichen Sie kein Bild von Daten. Siehe [Erstellen eines reproduzierbaren Beispiels] (https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). Was genau meinst du mit "wirklich überladen"? Was genau soll die gewünschte Ausgabe sein? – MrFlick

Antwort

0

Sie können dies tun:

ggplot (...) + facet_grid(. ~ variable) 

Facet_grid macht die Grafik durch jede dieser kategoriale Felder in Ihrem „Variable“ Feld gespeichert.

0

Vielleicht so etwas?

library(dplyr) 
library(ggplot2) 
data <-B_TOF_melt %>% group_by(variable) %>% summarize(mean=mean(value), sd=sd(value)) 

ggplot(data, aes(x = variable, y = mean)) + geom_boxplot() 
ggplot(data, aes(x = variable, y = sd)) + geom_boxplot() 

Beispiel der Daten wäre nützlich.

+0

Ja, ich habe ein Bild davon hinzugefügt. – stochastiker

0
#generating key to mimic your data variable "Freq1_Hit1" 
hit<-rep(1:5,20) 
freq<-rep(1:20,each=5) 
freq_name=paste("freq",freq,sep="") 
hit_name=paste("hit",hit,sep="") 
key=paste(freq_name,"_",hit_name,sep="") #this is equal to your "variable" 
########################################################################### 
y<-unlist(strsplit(key,"_")) #split "variable into two string, convert into vector 
ind1<-seq(1,length(y),by=2) #create odd index that would be use to extract "freq" 
ind2<-seq(2,length(y),by=2) #creaet even index to extract "hit" 
freq2<-y[ind1] #using indexing to create freq2 variable 
hit2<-y[ind2] #useing indexing to create hit2 variable 
your.newdata<-data.frame(your.data, freq2, hit2) #combine data 
########################################################################### 
ggplot(your.newdata, aes(x=...,y=...) + 
geom_boxplot() + facet.grid(. ~ freq2)