Dengan grid.arrange
saya dapat mengatur banyak ggplot
gambar dalam kotak untuk mencapai gambar multi-panel dengan menggunakan sesuatu seperti:
library(ggplot2)
library(grid)
library(gridExtra)
buat beberapa plot ggplot2, lalu
plot5 <- grid.arrange(plot4, plot1, heights=c(3/4, 1/4), ncol=1, nrow=2)
Bagaimana saya bisa mendapatkan tata letak 2 kolom yang 'tidak seimbang' dengan satu plot di seluruh kolom pertama dan tiga plot di kolom kedua? Saya bermain-main dengan pendekatan 'grid-of-grids' dengan mencoba menggunakan grid.arrange
untuk memplot satu grid (misalnya plot5
, di atas) terhadap plot lain, tetapi memperoleh:
Kesalahan dalam mengaturGrob (..., as.table = as.table, clip = clip, main = main,: input harus grobs!
Memperbarui:
Terima kasih atas sarannya. Saya akan memeriksa viewports
dan grid
. Sementara itu, terima kasih kepada @DWin, layOut
fungsi dalam paket 'wq' bekerja sangat baik untuk gambar kompilasi di Sweave
dokumen saya :
Perbarui 2:
Itu arrangeGrob
perintah (seperti yang disarankan oleh @baptiste) juga bekerja dengan baik, dan tampaknya sangat intuitif - setidaknya itu mudah untuk lebar alter dari dua kolom. Ini juga memiliki keuntungan karena tidak membutuhkan paket `wq '.
mis. Ini kode dari file Sweave saya:
<<label=fig5plot, echo=F, results=hide>>=
plot5<-grid.arrange(plot4, arrangeGrob(plot1, plot2, plot3, ncol=1),
ncol=2, widths=c(1,1.2))
@
\begin{figure}[]
\begin{center}
<<label=fig5,fig=TRUE,echo=T, width=10,height=12>>=
<<fig5plot>>
@
\end{center}
\caption{Combined plots using the `arrangeGrob' command.}
\label{fig:five}
\end{figure}
yang menghasilkan keluaran sebagai berikut:
BTW, Ada yang bilang kenapa '> NA' muncul?
grid.arrange
mungkin tidak cukup fleksibel (penelusuran stackoverflow untuk "[r] grid viewport")grid
. Lihat juga buku ggplot2 Hadley, Bagian 8.4.2.grid.arrange
dapat digunakan dengan viewports bersarang menggunakan pendampingnyaarrangeGrob
(pada dasarnya mengembalikan agTree
), seperti pada contoh yang saya berikan di bawah.plot5
tidak diperlukan karenagrid.arrange
tidak mengembalikan apa-apa (NULL). Jika Anda ingin menyimpan grob yang dihasilkan, gunakanarrangeGrob
lagi (dangrid.draw
untuk menampilkannya).Jawaban:
grid.arrange
menggambar langsung di perangkat; jika Anda ingin menggabungkannya dengan objek grid lain yang Anda butuhkanarrangeGrob
, seperti padaEdit (07/2015): dengan v> 2.0.0 Anda dapat menggunakan
layout_matrix
argumen,sumber
cbind(c(1,1,1), c(2,3,4))
matriks menjelaskan susunan gambar?Saya mencoba mengetahuinya dengan grid dan mengira saya telah menurunkannya tetapi akhirnya gagal (meskipun sekarang melihat kode dalam fungsi yang saya kutip di bawah, saya dapat melihat bahwa saya benar-benar dekat ... :-)
Paket 'wq' memiliki
layOut
fungsi yang akan melakukannya untuk Anda:sumber
g1
,g2
, dll untuk semua bep1
?Alternatif lain adalah
patchwork
paket oleh Thomas Lin Pedersen.Buat beberapa plot.
Sekarang atur plotnya.
sumber
Ada juga paket multipanelfigure yang layak untuk disebutkan. Lihat juga jawaban ini .
Dibuat pada 16-07-2018 oleh paket reprex (v0.2.0.9000).
sumber