に基づくソリューションの欠点の 1 つはgrid.arrange
、ほとんどのジャーナルが要求するように、プロットに文字 (A、B など) のラベルを付けることが困難になることです。
この(および他のいくつかの)問題、特に関数を解決するために、cowplotplot_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")
返されるオブジェクトは別の ggplot2 オブジェクトであり、通常どおりplot_grid()
に保存できます。ggsave()
p <- plot_grid(iris1, iris2, labels = "AUTO")
ggsave("plot.pdf", p)
あるいは、結合されたプロットの正しい次元を簡単に取得できるsave_plot()
薄いラッパーであるcowplot 関数を使用できます。ggsave()
p <- plot_grid(iris1, iris2, labels = "AUTO")
save_plot("plot.pdf", p, ncol = 2)
(ncol = 2
引数はsave_plot()
、2 つのプロットが横に並んでいるsave_plot()
ことを示し、保存されたイメージの幅を 2 倍にします。)
プロットをグリッドに配置する方法の詳細については、このビネットを参照してください。凡例を共有してプロットを作成する方法を説明するビネットもあります。
よくある混乱のポイントの 1 つは、cowplot パッケージがデフォルトの ggplot2 テーマを変更することです。このパッケージは、もともと内部ラボで使用するために作成されたものであり、既定のテーマを使用していないため、そのように動作します。これにより問題が発生する場合は、次の 3 つの方法のいずれかを使用して問題を回避できます。
1. プロットごとにテーマを手動で設定します。+ theme_bw()
上記の例で行ったように、プロットごとに特定のテーマを常に指定することをお勧めします。特定のテーマを指定する場合、デフォルトのテーマは関係ありません。
2. デフォルトのテーマを ggplot2 のデフォルトに戻します。これは、1 行のコードで実行できます。
theme_set(theme_gray())
3. パッケージをアタッチせずに cowplot 関数を呼び出します。library(cowplot)
orを呼び出すこともできずrequire(cowplot)
、代わりに を先頭に追加してカウプロット関数を呼び出すこともできますcowplot::
。たとえば、ggplot2 のデフォルト テーマを使用した上記の例は次のようになります。
## 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")
アップデート:
- cowplot 1.0 以降、デフォルトの ggplot2 テーマは変更されなくなりました。
- ggplot2 3.0.0 以降、プロットに直接ラベルを付けることができます。たとえば、こちらを参照してください。