に基づくソリューションの欠点の1つは、grid.arrange
ほとんどのジャーナルが必要とするように、プロットに文字(A、Bなど)でラベルを付けることが困難になることです。
私はこの問題(およびその他いくつかの問題)を解決するためにカウプロットパッケージを作成しました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")
plot_grid()
返されるオブジェクトは別のggplot2オブジェクトでありggsave()
、通常どおりに保存できます。
p <- plot_grid(iris1, iris2, labels = "AUTO")
ggsave("plot.pdf", p)
または、cowplot関数を使用することもできますsave_plot()
。これは、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.パッケージを添付せずにカウプロット関数を呼び出します。library(cowplot)
または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以降、プロットに直接ラベルを付けることができます。たとえば、こちらを参照してください。