facet_wrap facet_grid r ggplot2 facet-wrap

¿Cuál es la diferencia entre facet_wrap() y facet_grid() en ggplot2?



facet_grid vs facet_wrap (3)

La respuesta a continuación se refiere al caso cuando tienes 2 argumentos en facet_grid() o facet_wrap() .

facet_grid(x ~ y) mostrará x*y trazados, incluso si algunos trazados están vacíos. Ex:

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

Hay 4 cilindros distintos y 7 valores de clase distintos.

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

Hay 4 cilindros distintos y 7 valores de clase distintos. Lo anterior muestra 4 * 7 = 28 parcelas, incluso si algunas están vacías (porque algunas clases no tienen valores de cilindro correspondientes, como filas con clase = "tamaño mediano" no tiene ningún valor correspondiente de cyl = "5") facet_wrap(x ~ y) por otro lado, muestra solo los gráficos que tienen valores reales.

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

Ahora se muestran 19 parcelas, una para cada combinación de cyl y clase.

He estado leyendo la documentación de ggplot2 para ambas funciones. Me preguntaba cuáles eran las diferencias y cuál sería la situación correcta para usar cada función ( facet_wrap() y facet_grid() ).

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

Proporciono este pequeño ejemplo para servir como punto de partida. La diferencia parece ser que el ajuste hace que las tramas sean más autónomas y la cuadrícula hace que todas las tramas estén juntas.


Para gráficos de una sola variable, puede usar facet_grid() o facet_wrap() .

facet_wrap(~variable) devolverá una matriz simétrica de gráficos para la cantidad de niveles de variable .

facet_grid(.~variable) devolverá facetas iguales a los niveles de variable distribuidos horizontalmente.

facet_grid(variable.~) devolverá facetas iguales a los niveles de variable distribuidos verticalmente.


facet_wrap(...) encadena ggplots en diferentes marcos (facetas) basados ​​en una sola variable. facet_grid(...) puede tomar dos variables:

p + facet_grid(cyl~class)

También puede usar una tercera variable para agrupar en cada faceta:

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

muestra la mejora (o la falta de ella) en el millaje de la carretera frente al desplazamiento por # cilindros y clase.