Salah satu kelemahan dari solusi yang didasarkan pada grid.arrange
adalah bahwa mereka membuat sulit untuk memberi label plot dengan huruf (A, B, dll), karena kebanyakan jurnal membutuhkan.
Saya menulis paket cowplot untuk menyelesaikan masalah ini (dan beberapa lainnya), khususnya fungsinya 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")
Objek yang plot_grid()
kembali adalah objek ggplot2 lain, dan Anda dapat menyimpannya ggsave()
seperti biasa:
p <- plot_grid(iris1, iris2, labels = "AUTO")
ggsave("plot.pdf", p)
Sebagai alternatif, Anda dapat menggunakan fungsi cowplot save_plot()
, yang merupakan pembungkus tipis ggsave()
yang memudahkan untuk mendapatkan dimensi yang benar untuk plot gabungan, misalnya:
p <- plot_grid(iris1, iris2, labels = "AUTO")
save_plot("plot.pdf", p, ncol = 2)
( ncol = 2
Argumennya mengatakan save_plot()
bahwa ada dua plot berdampingan, dan save_plot()
membuat gambar yang disimpan dua kali lebih lebar.)
Untuk deskripsi yang lebih mendalam tentang cara mengatur plot dalam kisi, lihat sketsa ini. Ada juga sketsa yang menjelaskan cara membuat plot dengan legenda bersama.
Satu hal yang sering membingungkan adalah bahwa paket cowplot mengubah tema ggplot2 default. Paket berperilaku seperti itu karena pada awalnya ditulis untuk penggunaan lab internal, dan kami tidak pernah menggunakan tema default. Jika ini menyebabkan masalah, Anda dapat menggunakan salah satu dari tiga pendekatan berikut untuk mengatasinya:
1. Atur tema secara manual untuk setiap plot. Saya pikir itu praktik yang baik untuk selalu menentukan tema tertentu untuk setiap plot, seperti yang saya lakukan + theme_bw()
pada contoh di atas. Jika Anda menentukan tema tertentu, tema default tidak masalah.
2. Kembalikan tema default kembali ke default ggplot2. Anda dapat melakukan ini dengan satu baris kode:
theme_set(theme_gray())
3. Panggil fungsi cowplot tanpa melampirkan paket. Anda juga tidak dapat memanggil library(cowplot)
atau require(cowplot)
memanggil fungsi cowplot dengan menambahkan terlebih dahulu cowplot::
. Misalnya, contoh di atas menggunakan tema default ggplot2 akan menjadi:
## 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")
Pembaruan:
- Pada cowplot 1.0, tema default ggplot2 tidak berubah lagi.
- Pada ggplot2 3.0.0, plot dapat diberi label secara langsung, lihat misalnya di sini.