Con grid.arrangepuedo organizar varias ggplotfiguras en una cuadrícula para lograr una figura de varios paneles usando algo como:
library(ggplot2)
library(grid)
library(gridExtra)
generar algunos gráficos ggplot2, luego
plot5 <- grid.arrange(plot4, plot1, heights=c(3/4, 1/4), ncol=1, nrow=2)
¿Cómo puedo obtener un diseño de 2 columnas 'desequilibrado' con una parcela en toda la primera columna y tres parcelas en la segunda columna? Jugué con un enfoque de 'cuadrícula de cuadrículas' tratando de usar grid.arrangepara trazar una cuadrícula (por ejemplo plot5, arriba) contra otra trama, pero obtuve:
Error en arreglarGrob (..., as.table = as.table, clip = clip, main = main,: ¡la entrada debe ser grobs!
Actualizar:
Gracias por el consejo. Examinaré viewportsy grid. Mientras tanto, gracias a @DWin, la layOutfunción en el paquete 'wq' funcionó muy bien para la figura de compilación en mi Sweavedocumento:

Actualización 2:
El arrangeGrobcomando (como lo sugiere @baptiste) también funciona bien y parece muy intuitivo; al menos fue fácil alterar el ancho de las dos columnas. También tiene la ventaja de no requerir el paquete 'wq'.
Por ejemplo, aquí está el código de mi archivo Sweave:
<<label=fig5plot, echo=F, results=hide>>=
plot5<-grid.arrange(plot4, arrangeGrob(plot1, plot2, plot3, ncol=1),
ncol=2, widths=c(1,1.2))
@
\begin{figure}[]
\begin{center}
<<label=fig5,fig=TRUE,echo=T, width=10,height=12>>=
<<fig5plot>>
@
\end{center}
\caption{Combined plots using the `arrangeGrob' command.}
\label{fig:five}
\end{figure}
que produce la siguiente salida:

Por cierto, ¿alguien me dice por qué aparece '> NA'?

grid.arrangepuede que no sea lo suficientemente flexible (busque stackoverflow para "[r] ventanagrid. Consulte también el libro ggplot2 de Hadley, Sección 8.4.2.grid.arrangese puede usar con viewports anidados usando su compañeroarrangeGrob(esencialmente devolviendo agTree), como en el ejemplo que di a continuación.plot5no es necesaria ya quegrid.arrangeno devuelve nada (NULL). Si desea guardar el grob resultante, úseloarrangeGrobnuevamente (ygrid.drawpara mostrarlo).Respuestas:
grid.arrangedibuja directamente en el dispositivo; si desea combinarlo con otros objetos de cuadrícula que necesitaarrangeGrob, como enEditar (07/2015): con v> 2.0.0 puede usar el
layout_matrixargumento,fuente
cbind(c(1,1,1), c(2,3,4))matriz describe la disposición de las figuras?Intenté resolverlo con la cuadrícula y pensé que lo tenía abajo, pero terminé fallando (aunque mirando ahora el código en la función que cito a continuación, puedo ver que estaba muy cerca ... :-)
El paquete 'wq' tiene una
layOutfunción que lo hará por usted:fuente
g1,g2, etc para todos serp1?Otra alternativa es el
patchworkpaquete de Thomas Lin Pedersen.Genere algunas parcelas.
Ahora arregle las parcelas.
fuente
También hay un paquete multipanelfigure que vale la pena mencionar. Vea también esta respuesta .
Creado el 2018-07-16 por el paquete reprex (v0.2.0.9000).
fuente