Avec grid.arrange
je peux organiser plusieurs ggplot
figures dans une grille pour obtenir une figure multi-panneaux en utilisant quelque chose comme:
library(ggplot2)
library(grid)
library(gridExtra)
générer des graphiques ggplot2, puis
plot5 <- grid.arrange(plot4, plot1, heights=c(3/4, 1/4), ncol=1, nrow=2)
Comment puis-je obtenir une disposition à 2 cols «déséquilibrée» avec une parcelle dans tout le premier col et trois parcelles dans le deuxième col? J'ai joué avec une approche `` grille de grilles '' en essayant d'utiliser grid.arrange
pour tracer une grille (par exemple plot5
, ci-dessus) par rapport à une autre parcelle, mais j'ai obtenu:
Erreur dans arrangeGrob (..., as.table = as.table, clip = clip, main = main,: l'entrée doit être grobs!
Mettre à jour:
Merci pour le conseil. Je vais examiner viewports
et grid
. En attendant, grâce à @DWin, la layOut
fonction du package 'wq' fonctionnait très bien pour la figure de compilation dans mon Sweave
document:
Mise à jour 2:
La arrangeGrob
commande (comme suggéré par @baptiste) fonctionne également bien et semble très intuitive - au moins, il était facile de modifier les largeurs des deux colonnes. Il a également l'avantage de ne pas nécessiter le paquet `wq '.
Par exemple, voici le code de mon fichier 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}
qui produit la sortie suivante:
BTW, quelqu'un me dit pourquoi le «> NA» apparaît?
grid
. Voir aussi le livre ggplot2 de Hadley, Section 8.4.2.
grid.arrange
peut être utilisé avec des fenêtres imbriquées en utilisant son compagnon arrangeGrob
(renvoyant essentiellement a gTree
), comme dans l'exemple que j'ai donné ci-dessous.
plot5
n'est pas requise car grid.arrange
ne renvoie rien (NULL). Si vous voulez sauvegarder le grob résultant, utilisez à arrangeGrob
nouveau (et grid.draw
pour l'afficher).
grid.arrange
ce n'est peut-être pas assez flexible (recherche stackoverflow pour "[r] grid viewport")