2016-03-31 10 views
0

Ich habe mehrere Beispiele mit ggplot2 und reshapre library gesehen. Aber mein Endergebnis überlagert immer noch meine Boxplots. Ich habe noch kein einfaches Beispiel auf einem 2x2 Boxplot-Design (Gruppen- und Zeitinteraktion) gesehen. Ich habe nur einen Datenrahmen.ggplot: Anzeige der Gruppen- und Zeitinteraktion (2x2) mit Boxplots

ggplot(aes(y = DV, x = "Group and Time", col = df$group), data = df) + 
    geom_boxplot(aes(y = df$y1, x=df$group, col="T1")) + 
    geom_boxplot(aes(y = df$y2, x=df$group, col="T2")) 

enter image description here

Farbe für T2 (blau) T1-Farbe überlagert (rot). Mein minimal Beispiel sieht irgendwie wie folgt aus:

set.seed(1234) 
x<- sample(c("exp", "con"), 100, replace = TRUE) 
yT1<-rnorm(100) 
yT2<-rnorm(100) 
df<- (as.data.frame(cbind(x,yT1,yT2))) 
head(df) 

    x    yT1     yT2 
1 exp 0.405002805433516  1.94871306497599 
2 exp 0.97580332180945 0.933816332207727 
3 con -0.348876736539909  1.91305942169705 
4 con 0.158625439491262 -0.00523405793193957 
5 exp -1.76325506654115 -0.152260048921635 
6 exp 0.338596047099905 -0.509631657179118 

ggplot(aes(y = DV, x = "group and time", col = df$x), data = df) + 
    geom_boxplot(aes(y = df$yT1, x=df$x, col="T1")) + 
    geom_boxplot(aes(y = df$yT2, x=df$x, col="T2")) 

Ich weiß, dass mein minimal Beispiel eine Art von Klasse-Transformation fehlt (der df Faktor ist, sollte aber numerische Spalten enthalten). Es tut mir leid, aber ich weiß nicht, wie ich das jetzt beheben soll. Ich hoffe, du kommst auf die Idee. Vielen Dank

+0

Haben Sie trie d Umformung? Was schief gelaufen ist? Sie zeichnen derzeit 2 Boxplots, einen für jedes "y", übereinander für jeden Wert von "x". Wenn Sie sich umgestalten, werden Sie in der Lage sein, ihnen auszuweichen. Nebenbei, Sie brauchen (und sollten nicht verwenden) die Dollarzeichen-Notation innerhalb der ggplot-Funktionen. – aosmith

Antwort

1

Ich bin mir nicht sicher, was Sie genau meinen - ich nehme an, eine Interaktion zwischen exp/con und T1/T2?

Vielleicht ist dies einer der Plot Sie suchen (beachten Sie die interaction aes im Funktionsaufruf):

library(ggplot2) 
library(tidyr) 

set.seed(1234) 
x<- sample(c("exp", "con"), 100, replace = TRUE) 
yT1<-rnorm(100) 
yT2<-rnorm(100) 
df1 <- as.data.frame(cbind(x,yT1,yT2)) 

df2 <- gather(df1, "grp", "val", yT1, yT2) 
df2$val <- as.numeric(df2$val) 

ggplot(df2, aes(x = grp, y = val, interaction = x, colour = grp)) + 
    geom_boxplot() 

enter image description here

oder als Alternative, wobei jede Gruppe eine eigene Farbe zu geben:

df2$newx <- sprintf("%s.%s", as.character(df2$x), df2$grp) 

ggplot(df2, aes(x = newx, y = val, colour = newx)) + 
    geom_boxplot() 

enter image description here

+0

Ihre Lösung sieht gut aus. Ich versuche immer noch, es auf meine Daten anzuwenden (was die "Ästhetik muss entweder Länge 1 oder die gleiche wie die Daten" -Fehler) zurückgibt. Ich arbeite an diesem Problem – Mac

+0

Großartig! Ich habe gerade meine Spalten-/Variablennamen vermasselt. Alles ist in Ordnung :) Vielen Dank – Mac

Verwandte Themen