Con grid.arrange
puedo organizar varias ggplot
figuras 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.arrange
para 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é viewports
y grid
. Mientras tanto, gracias a @DWin, la layOut
función en el paquete 'wq' funcionó muy bien para la figura de compilación en mi Sweave
documento:
Actualización 2:
El arrangeGrob
comando (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.arrange
puede 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.arrange
se puede usar con viewports anidados usando su compañeroarrangeGrob
(esencialmente devolviendo agTree
), como en el ejemplo que di a continuación.plot5
no es necesaria ya quegrid.arrange
no devuelve nada (NULL). Si desea guardar el grob resultante, úseloarrangeGrob
nuevamente (ygrid.draw
para mostrarlo).Respuestas:
grid.arrange
dibuja 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_matrix
argumento,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
layOut
función que lo hará por usted:fuente
g1
,g2
, etc para todos serp1
?Otra alternativa es el
patchwork
paquete 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