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
. Consulte también el libro ggplot2 de Hadley, Sección 8.4.2.
grid.arrange
se puede usar con viewports anidados usando su compañero arrangeGrob
(esencialmente devolviendo a gTree
), como en el ejemplo que di a continuación.
plot5
no es necesaria ya que grid.arrange
no devuelve nada (NULL). Si desea guardar el grob resultante, úselo arrangeGrob
nuevamente (y grid.draw
para mostrarlo).
grid.arrange
puede que no sea lo suficientemente flexible (busque stackoverflow para "[r] ventana