Boxplot rispetto a due fattori usando ggplot2 in R


13

Sono molto nuovo su R e su tutti i pacchetti in R. Ho guardato la documentazione di ggplot2 ma non sono riuscito a trovarlo. Voglio un diagramma a scatole di variabili boxthisrispetto a due fattori f1e f2. Cioè supporti sia f1e f2sono variabili fattore e ciascuno di essi richiede due valori ed boxthisè una variabile continua. Voglio ottenere 4 boxplots su un grafico, ciascuno corrispondente ad una combinazione delle possibili combinazioni f1e f2può assumere. Penso che usando la funzionalità di base in R, questo può essere fatto da

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

Grazie in anticipo per qualsiasi aiuto.


Fornisci dati di esempio per ottenere risposte precise.
mpiktas,

2
Questa domanda sarebbe quasi sicuramente adatta a stackoverflow.com, dato che qui c'è poco statistico.
richiemorrisroe,

Risposte:


23

Posso pensare a due modi per ottenere questo risultato:

1. Creare tutte le combinazioni di f1e f2al di fuori della ggplot-funzione

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()

inserisci qui la descrizione dell'immagine

2. usa color / fill / etc.

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

inserisci qui la descrizione dell'immagine


4
(+1) Mi piace l'uso di interaction(). Da notare, possiamo specificare geom_boxplot(position = position_dodge(width = .9))di aggiungere ulteriore spazio tra i grafici a scatole.
chl

1
Puoi anche usare l' dodgeargomento nella ggplotfunzione -ggplot(aes(y = boxthis, x = f2, fill = f1, dodge=f1), data = df) + geom_boxplot()
Maciej

0

Ecco un altro modo:

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

Fornisce qualcosa di simile al seguente:

Trama scatola sfaccettata

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.