Boxplot in Bezug auf zwei Faktoren unter Verwendung von ggplot2 in R

13

Ich bin zu R und zu irgendwelchen Paketen in R sehr neu. Ich schaute die ggplot2-Dokumentation an, konnte diese aber nicht finden. Ich möchte einen Boxplot der Variablen boxthisin Bezug auf zwei Faktoren f1und f2. Das ist sowohl annehmen f1und f2sind Faktorvariablen und jeder von ihnen nimmt zwei Werte und boxthisist eine kontinuierliche Variable. Ich möchte 4 Boxplots in einer Grafik erhalten, die jeweils einer Kombination aus den möglichen Kombinationen entsprechen, die f1und f2annehmen können. Ich denke, mit der Grundfunktionalität in R kann dies durch getan werden

> boxplot(boxthis ~ f1 * f2 , data = datasetname) 

Vielen Dank im Voraus für jede Hilfe.

Curious2learn
quelle
Bitte geben Sie Beispieldaten an, um genaue Antworten zu erhalten.
mpiktas
2
Diese Frage würde mit ziemlicher Sicherheit besser zu stackoverflow.com passen, da es hier wenig spezifisches statistisches gibt.
richiemorrisroe

Antworten:

23

Ich kann mir zwei Möglichkeiten vorstellen, um dies zu erreichen:

1. Erstellen Sie alle Kombinationen von f1und f2außerhalb der ggplot-Funktion

library(ggplot2)

df <- data.frame(f1=factor(rbinom(100, 1, 0.45), label=c("m","w")), 
                 f2=factor(rbinom(100, 1, 0.45), label=c("young","old")),
                 boxthis=rnorm(100))

df$f1f2 <- interaction(df$f1, df$f2)

ggplot(aes(y = boxthis, x = f1f2), data = df) + geom_boxplot()

Bildbeschreibung hier eingeben

2. benutze color / fill / etc.

ggplot(aes(y = boxthis, x = f2, fill = f1), data = df) + geom_boxplot()

Bildbeschreibung hier eingeben

Bernd Weiss
quelle
4
(+1) Ich mag die Verwendung von interaction(). Es ist zu beachten, dass wir angeben können, geom_boxplot(position = position_dodge(width = .9))dass zwischen Boxplots zusätzlicher Abstand eingefügt werden soll.
chl
1
Sie können das dodgeArgument auch in ggplotfunction -ggplot(aes(y = boxthis, x = f2, fill = f1, dodge=f1), data = df) + geom_boxplot()
Maciej
0

Hier ist ein anderer Weg:

ggplot(datasetname) + boxplot(aes(x=as.factor(f1),y=boxthis)) + facet_wrap(~as.factor(f2), nrow=5)

Gibt so etwas wie folgendes:

Facettierte Box Handlung

Richard
quelle