Saya menggunakan ggplot dan memiliki dua grafik yang ingin saya tampilkan di atas satu sama lain. Saya menggunakan grid.arrange
dari gridExtra untuk menumpuknya. Masalahnya adalah saya ingin tepi kiri grafik sejajar serta tepi kanan terlepas dari label sumbu. (masalah muncul karena label dari satu grafik pendek sedangkan yang lain panjang).
Pertanyaan:
Bagaimana saya bisa melakukan ini? Saya belum menikah dengan grid.arrange tetapi ggplot2 adalah suatu keharusan.
Apa yang telah saya coba:
Saya mencoba bermain dengan lebar dan tinggi serta ncol dan nrow untuk membuat kisi 2 x 2 dan menempatkan visual di sudut yang berlawanan dan kemudian bermain dengan lebar tetapi saya tidak bisa mendapatkan visual di sudut yang berlawanan .
require(ggplot2);require(gridExtra)
A <- ggplot(CO2, aes(x=Plant)) + geom_bar() +coord_flip()
B <- ggplot(CO2, aes(x=Type)) + geom_bar() +coord_flip()
grid.arrange(A, B, ncol=1)
Jawaban:
Coba ini,
Edit
Berikut adalah solusi yang lebih umum (bekerja dengan sejumlah plot) menggunakan versi modifikasi yang
rbind.gtable
disertakan dalamgridExtra
sumber
tableGrob
. Thegtable::cbind
memberi saya sebuah kesalahan mengecewakan:nrow(x) == nrow(y) is not TRUE
. Ada saran?[2:5]
berdiri?Saya ingin menggeneralisasi ini untuk sejumlah plot. Berikut adalah solusi langkah demi langkah menggunakan pendekatan oleh Baptiste:
kumpulkan lebar untuk setiap grob di setiap plot
gunakan do.call untuk mendapatkan lebar maksimal
tetapkan lebar maksimal untuk setiap grob
merencanakan
sumber
Menggunakan paket cowplot :
sumber
Di http://rpubs.com/MarkusLoew/13295 adalah solusi yang sangat mudah tersedia (item terakhir) Diterapkan untuk masalah ini:
Anda juga dapat menggunakan ini untuk lebar dan tinggi:
sumber
size="first"
berarti bahwa penyelarasan tidak akan terlihat sangat baik jika plot kedua lebih besar dari yang pertamaThe
egg
paket membungkus ggplot objek menjadi standar3x3
gtable, memungkinkan penyelarasan panel plot antara ggplots sewenang-wenang, termasuk yang facetted.sumber
geom_tile
) dengan legenda di bagian bawah dan peta panas multifaset (facet_grid
dengangeom_tile
), tetapi gagal untuk menyelaraskan ketinggian plot ketiga, yang merupakan dendrogram (geom_segment
). Namun, cowplot ataugridExtra::grid.arrange
bahkan tidak mampu melakukan yang pertama, jadi sejauh ini yang terbaikBerikut adalah solusi lain yang mungkin menggunakan
melt
dari paket reshape2, danfacet_wrap
:sumber
The tambal sulam paket menangani ini secara default:
Dibuat pada 2019-12-08 oleh paket reprex (v0.3.0)
sumber
Paling banter ini adalah retasan:
Rasanya sangat salah.
sumber
Saya tahu ini adalah posting lama, dan itu telah dijawab, tetapi izinkan saya menyarankan untuk menggabungkan pendekatan @ baptiste dengan
purrr
agar terlihat lebih bagus:sumber