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.arrange
möglicherweise nicht flexibel genug (Stackoverflow nach "[r] grid viewport" durchsuchen)grid
. Siehe auch Hadleys ggplot2-Buch, Abschnitt 8.4.2.grid.arrange
kann mit verschachtelten Ansichtsfenstern unter Verwendung seines Begleiters verwendet werdenarrangeGrob
(im Wesentlichen wird a zurückgegebengTree
), wie im folgenden Beispiel.plot5
ist nicht erforderlich, dagrid.arrange
nichts zurückgegeben wird (NULL). Wenn Sie den resultierenden Grob speichern möchten, verwenden Sie ihnarrangeGrob
erneut (undgrid.draw
zeigen Sie ihn an).Antworten:
grid.arrange
zeichnet direkt auf das Gerät; Wenn Sie es mit anderen Rasterobjekten kombinieren möchten, die Sie benötigenarrangeGrob
, wie inBearbeiten (07/2015): Mit v> 2.0.0 können Sie das
layout_matrix
Argument verwenden,quelle
cbind(c(1,1,1), c(2,3,4))
Matrix die Anordnung der Figuren beschreibt?Ich habe versucht, es mit einem Raster herauszufinden, und dachte, ich hätte es nicht geschafft, aber es ist fehlgeschlagen (obwohl ich jetzt den Code in der unten zitierten Funktion betrachte, kann ich sehen, dass ich wirklich nah dran war ... :-)
Das 'wq'-Paket hat eine
layOut
Funktion, die es für Sie :quelle
g1
,g2
usw. zu allen seinp1
?Eine weitere Alternative ist das
patchwork
Paket von Thomas Lin Pedersen.Generieren Sie einige Diagramme.
Ordnen Sie nun die Grundstücke an.
quelle
Es gibt auch ein Multipanelfigure-Paket , das es wert ist, erwähnt zu werden. Siehe auch diese Antwort .
Erstellt am 2018-07-16 vom reprex-Paket (v0.2.0.9000).
quelle