Ein Nachteil der Lösungen, die auf grid.arrange
ist, dass sie die Kennzeichnung der Parzellen mit Buchstaben (A, B usw.), wie sie in den meisten Zeitschriften verlangt wird, erschweren.
Ich habe die Kuhplot Paket, um dieses (und ein paar andere) Probleme zu lösen, insbesondere die Funktion plot_grid()
:
library(cowplot)
iris1 <- ggplot(iris, aes(x = Species, y = Sepal.Length)) +
geom_boxplot() + theme_bw()
iris2 <- ggplot(iris, aes(x = Sepal.Length, fill = Species)) +
geom_density(alpha = 0.7) + theme_bw() +
theme(legend.position = c(0.8, 0.8))
plot_grid(iris1, iris2, labels = "AUTO")
Das Objekt, das plot_grid()
zurückgibt, ist ein weiteres ggplot2-Objekt, und Sie können es mit ggsave()
wie immer:
p <- plot_grid(iris1, iris2, labels = "AUTO")
ggsave("plot.pdf", p)
Alternativ können Sie auch die Funktion cowplot verwenden save_plot()
, die eine dünne Hülle um ggsave()
die es einfach macht, die richtigen Dimensionen für kombinierte Plots zu erhalten, z. B.:
p <- plot_grid(iris1, iris2, labels = "AUTO")
save_plot("plot.pdf", p, ncol = 2)
(Die ncol = 2
Argument sagt save_plot()
dass zwei Grundstücke nebeneinander liegen, und save_plot()
macht das gespeicherte Bild doppelt so breit).
Eine ausführlichere Beschreibung der Anordnung von Plots in einem Raster finden Sie unter diese Vignette. Es gibt auch eine Vignette, die erklärt, wie man Plots mit einer gemeinsame Legende.
Ein häufiger Punkt der Verwirrung ist, dass das cowplot-Paket das Standardthema von ggplot2 ändert. Das Paket verhält sich so, weil es ursprünglich für interne Laborzwecke geschrieben wurde und wir das Standardthema nie verwenden. Wenn dies Probleme verursacht, können Sie einen der folgenden drei Ansätze verwenden, um sie zu umgehen:
1. Legen Sie das Thema manuell für jedes Grundstück fest. Ich halte es für eine gute Praxis, immer ein bestimmtes Thema für jede Handlung festzulegen, so wie ich es bei + theme_bw()
im obigen Beispiel. Wenn Sie ein bestimmtes Thema angeben, spielt das Standardthema keine Rolle.
2. Kehren Sie das Standardthema zum Standardthema von ggplot2 zurück. Sie können dies mit einer Zeile Code tun:
theme_set(theme_gray())
3. Rufen Sie die cowplot-Funktionen auf, ohne das Paket anzuhängen. Sie können auch nicht anrufen library(cowplot)
o require(cowplot)
und rufen stattdessen Cowplot-Funktionen auf, indem sie cowplot::
. Das obige Beispiel mit dem Standard-Theme von ggplot2 würde z.B. so aussehen:
## Commented out, we don't call this
# library(cowplot)
iris1 <- ggplot(iris, aes(x = Species, y = Sepal.Length)) +
geom_boxplot()
iris2 <- ggplot(iris, aes(x = Sepal.Length, fill = Species)) +
geom_density(alpha = 0.7) +
theme(legend.position = c(0.8, 0.8))
cowplot::plot_grid(iris1, iris2, labels = "AUTO")
Aktualisierungen:
- Seit cowplot 1.0 wird das Standard ggplot2-Theme nicht mehr verändert.
- Ab ggplot2 3.0.0 können Plots direkt beschriftet werden, siehe z.B. hier.