Mit grid.arrange
kann ich mehrere ggplot
Figuren in einem Raster anordnen , um eine Figur mit mehreren Feldern zu erhalten, indem ich Folgendes verwende:
library(ggplot2)
library(grid)
library(gridExtra)
Generieren Sie dann einige ggplot2-Diagramme
plot5 <- grid.arrange(plot4, plot1, heights=c(3/4, 1/4), ncol=1, nrow=2)
Wie kann ich ein "unausgeglichenes" 2-Spalten-Layout mit einem Diagramm in der gesamten ersten Spalte und drei Diagrammen in der zweiten Spalte erhalten? Ich spielte mit einem "Grid-of-Grids" -Ansatz, indem ich versuchte, grid.arrange
ein Gitter (z. B. plot5
oben) gegen ein anderes Diagramm zu zeichnen, erhielt jedoch Folgendes:
Fehler in arrangGrob (..., as.table = as.table, clip = clip, main = main ,: Eingabe muss grobs sein!
Aktualisieren:
Danke für den Hinweis. Ich werde in viewports
und schauen grid
. In der Zwischenzeit hat die layOut
Funktion im 'wq'-Paket dank @DWin für die Kompilierungsfigur in meinem Sweave
Dokument sehr gut funktioniert :
Update 2:
Der arrangeGrob
Befehl (wie von @baptiste vorgeschlagen) funktioniert ebenfalls gut und scheint sehr intuitiv zu sein - zumindest war es einfach, die Breite der beiden Spalten zu ändern. Es hat auch den Vorteil, dass das `wq'-Paket nicht benötigt wird.
zB Hier ist der Code aus meiner Sweave-Datei:
<<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}
welches die folgende Ausgabe erzeugt:
Übrigens, sagt mir jemand, warum die '> NA' erscheint?
grid
. Siehe auch Hadleys ggplot2-Buch, Abschnitt 8.4.2.
grid.arrange
kann mit verschachtelten Ansichtsfenstern unter Verwendung seines Begleiters verwendet werden arrangeGrob
(im Wesentlichen wird a zurückgegeben gTree
), wie im folgenden Beispiel.
plot5
ist nicht erforderlich, da grid.arrange
nichts zurückgegeben wird (NULL). Wenn Sie den resultierenden Grob speichern möchten, verwenden Sie ihn arrangeGrob
erneut (und grid.draw
zeigen Sie ihn an).
grid.arrange
möglicherweise nicht flexibel genug (Stackoverflow nach "[r] grid viewport" durchsuchen)