2013-12-08 22 views
37

Ho letto la documentazione ggplot2 per entrambe le funzioni. Mi chiedevo quali fossero le differenze e quale sarebbe la situazione giusta per l'utilizzo di ciascuna funzione (facet_wrap() e facet_grid()).Qual è la differenza tra facet_wrap() e facet_grid() in ggplot2?

library(ggplot2) 

p <- qplot(displ, hwy, data = mpg) 
p + facet_wrap(~ cyl) 

p + facet_grid(~ cyl) 

Fornisco questo piccolo esempio da utilizzare come punto di partenza. La differenza sembra essere avvolgente rende le trame più autonome e la griglia rende tutto un complotto.

+5

Nel caso in cui tu non sappia hadley ha una versione elettronica della documentazione qui: http://docs.ggplot2.org/current/. Questi possono essere utili nel vedere qual è la differenza tra le due funzioni. –

risposta

24

La risposta di seguito si riferisce al caso in cui si hanno 2 argomenti in facet_grid() o facet_wrap().

facet_grid(x ~ y) visualizzerà i grafici x*y anche se alcuni grafici sono vuoti. Es:

library(ggplot2) 
g <- ggplot(mpg, aes(displ, hwy)) 

Ci sono 4 cyl distinte e 7 valori di classe distinti.

g + geom_point(alpha=1/3) + facet_grid(cyl~class) 

Ci sono 4 distinti valori di classe C e 7 distinti. Quanto sopra mostra 4 * 7 = 28 grafici, anche se alcuni sono vuoti (poiché alcune classi non hanno valori di cilindro corrispondenti, come le righe con class = "midsize" non ha alcun corrispondente valore di cyl = "5") facet_wrap(x ~ y) d'altra parte, mostra solo i grafici con valori reali.

g + geom_point(alpha=1/3) + facet_wrap(cyl~class) 

ci sono 19 lotti visualizzati ora, uno per ogni combinazione di cil e classe.

20

facet_wrap(...) stringhe insieme ggplots in diversi frame (facet) basati su un'unica variabile. facet_grid(...) può assumere due variabili:

p + facet_grid(cyl~class) 

È anche possibile utilizzare una terza variabile al gruppo in ogni aspetto:

qplot(displ, hwy, data=mpg,color=factor(year)) + facet_grid(cyl~class) 

mostra il miglioramento (o mancanza) in chilometraggio Hwy-spostamento da #cylinders e classe.

+4

'facet_wrap' può prendere anche due variabili. – marbel

4

Per grafici a variabile singola è possibile utilizzare facet_grid() o facet_wrap().

facet_wrap(~variable) restituirà una matrice simmetrica di grafici per il numero di livelli di variable.

facet_grid(.~variable) restituirà facet pari ai livelli di variable distribuiti orizzontalmente.

facet_grid(variable.~) restituirà facet pari ai livelli di variable distribuiti verticalmente.