Con grid.arrange
posso disporre più ggplot
figure in una griglia per ottenere una figura multi-pannello usando qualcosa come:
library(ggplot2)
library(grid)
library(gridExtra)
generare alcuni grafici ggplot2, quindi
plot5 <- grid.arrange(plot4, plot1, heights=c(3/4, 1/4), ncol=1, nrow=2)
Come posso ottenere un layout a 2 colonne "sbilanciato" con un grafico nell'intera prima colonna e tre grafici nella seconda colonna? Ho giocato con un approccio 'griglia di griglie' cercando di utilizzare grid.arrange
per tracciare una griglia (ad esempio plot5
, sopra) contro un'altra trama, ma ho ottenuto:
Errore in organizzareGrob (..., as.table = as.table, clip = clip, main = main,: l'input deve essere grobs!
Aggiornare:
Grazie per il consiglio. Esaminerò viewports
e grid
. Nel frattempo, grazie a @DWin, la layOut
funzione nel pacchetto 'wq' ha funzionato molto bene per la figura di compilazione nel mio Sweave
documento:
Aggiornamento 2:
Anche il arrangeGrob
comando (come suggerito da @baptiste) funziona bene e sembra molto intuitivo - almeno è stato facile modificare le larghezze delle due colonne. Ha anche il vantaggio di non richiedere il pacchetto `wq '.
ad esempio, ecco il codice dal mio file 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}
che produce il seguente output:
A proposito, qualcuno mi dice perché appare "> NA"?
grid
. Vedere anche il libro ggplot2 di Hadley, Sezione 8.4.2.
grid.arrange
può essere utilizzato con le finestre nidificate usando il suo compagno arrangeGrob
(essenzialmente restituendo a gTree
), come nell'esempio che ho fornito di seguito.
plot5
non è richiesta poiché grid.arrange
non restituisce nulla (NULL). Se vuoi salvare il grob risultante, usalo di arrangeGrob
nuovo (e grid.draw
per visualizzarlo).
grid.arrange
potrebbe non essere abbastanza flessibile (cerca stackoverflow per "[r] visualizzazione griglia")