Ggplot2 basiert auf Rastergrafiken, die ein anderes System für die Anordnung von Diagrammen auf einer Seite bieten. Die par(mfrow...)
Befehl hat keine direkte Entsprechung, da Rasterobjekte (genannt grobs ) werden nicht unbedingt sofort gezeichnet, sondern können als reguläre R-Objekte gespeichert und manipuliert werden, bevor sie in eine grafische Ausgabe umgewandelt werden. Dies ermöglicht eine größere Flexibilität als bei der Zeichnen Sie das jetzt Modell der Basisgrafiken, aber die Strategie ist notwendigerweise ein wenig anders.
Ich schrieb grid.arrange()
eine einfache Schnittstelle zu bieten, die so nah wie möglich an par(mfrow)
. In seiner einfachsten Form würde der Code wie folgt aussehen:
library(ggplot2)
x <- rnorm(100)
eps <- rnorm(100,0,.2)
p1 <- qplot(x,3*x+eps)
p2 <- qplot(x,2*x+eps)
library(gridExtra)
grid.arrange(p1, p2, ncol = 2)
![enter image description here]()
Weitere Optionen finden Sie unter diese Vignette .
Häufig wird beanstandet, dass Diagramme nicht unbedingt ausgerichtet sind, z. B. wenn sie Achsenbeschriftungen unterschiedlicher Größe haben, aber das ist beabsichtigt: grid.arrange
macht keinen Versuch, ggplot2-Objekte zu spezialisieren, und behandelt sie genauso wie andere Grobs (z.B. Lattice Plots). Es platziert Grobs lediglich in einem rechteckigen Layout.
Für den speziellen Fall von ggplot2-Objekten habe ich eine weitere Funktion geschrieben, ggarrange
mit einer ähnlichen Schnittstelle, die versucht, Plot-Panels (einschließlich facettierter Plots) auszurichten und die Seitenverhältnisse zu beachten, wenn sie vom Benutzer definiert wurden.
library(egg)
ggarrange(p1, p2, ncol = 2)
Beide Funktionen sind kompatibel mit ggsave()
. Hier finden Sie einen allgemeinen Überblick über die verschiedenen Optionen und einen historischen Kontext, diese Vignette bietet zusätzliche Informationen .