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.arrange
ce n'est peut-être pas assez flexible (recherche stackoverflow pour "[r] grid viewport")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 compagnonarrangeGrob
(renvoyant essentiellement agTree
), comme dans l'exemple que j'ai donné ci-dessous.plot5
n'est pas requise cargrid.arrange
ne renvoie rien (NULL). Si vous voulez sauvegarder le grob résultant, utilisez àarrangeGrob
nouveau (etgrid.draw
pour l'afficher).Réponses:
grid.arrange
dessine directement sur l'appareil; si vous souhaitez le combiner avec d'autres objets de grille dont vous avez besoinarrangeGrob
, comme dansEdit (07/2015): avec v> 2.0.0 vous pouvez utiliser l'
layout_matrix
argument,la source
cbind(c(1,1,1), c(2,3,4))
matrice décrit la disposition des figures?J'ai essayé de le comprendre avec la grille et je pensais l'avoir en panne mais j'ai fini par échouer (bien qu'en regardant maintenant le code dans la fonction que je cite ci-dessous, je peux voir que j'étais vraiment proche ... :-)
Le package 'wq' a une
layOut
fonction qui le fera pour vous:la source
g1
,g2
, etc à être tousp1
?Une autre alternative est le
patchwork
package de Thomas Lin Pedersen.Générez des graphiques.
Maintenant, organisez les parcelles.
la source
Il existe également un package multipanelfigure qui mérite d'être mentionné. Voir aussi cette réponse .
Créé le 16/07/2018 par le package reprex (v0.2.0.9000).
la source