Citando principalmente del libro ggplot2, p. 148f.
Hay tres tipos de facetas:
facet_null() : un solo gráfico, el predeterminado.
facet_wrap() : "envuelve" una cinta de paneles 1d en 2d.
facet_grid() : produce una cuadrícula 2d de paneles definidos por variables que forman las filas y columnas.

Envoltura de facetas
facet_wrap()hace una cinta larga de paneles (generada por cualquier número de variables) y la envuelve en 2d. Esto es útil si tiene una sola variable con muchos niveles y desea organizar los gráficos de una manera más eficiente en cuanto al espacio.
Puede controlar la forma en que la cinta se envuelve en una cuadrícula con ncol, nrow,
as.tabley dir. ncoly nrowcontrole cuántas columnas y filas (solo necesita establecer una). as.tablecontrola si las facetas se presentan como una tabla ( TRUE), con los valores más altos en la parte inferior derecha, o un gráfico ( FALSE), con los valores más altos en la parte superior derecha. dircontrola la dirección de envoltura de:
h orizontal o v ertical.
Cuadrícula de facetas
Desde ?facet_grid: facet_grid()forma una matriz de paneles definidos por variables de facetas de filas y columnas. Es más útil cuando tiene dos variables discretas y todas las combinaciones de las variables existen en los datos.
Puede usar múltiples variables en las filas o columnas, "agregándolas" juntas, por ejemplo a + b ~ c + d.
facet grid()tiene un parámetro adicional llamado space, que toma los mismos valores que scales.
ggplot(subset(mpg, manufacturer %in% c("audi", "honda", "toyota")) , aes(drv, model)) +
geom_point() +
facet_grid(manufacturer ~ ., scales = "free", space = "free") +
theme(strip.text.y = element_text(angle = 0))

(simplificado) Ejemplo tomado de ?facet_grid
facet_wraptambién puede tomar dos variables.