Apakah ada cara untuk mengubah jarak antar item legenda di ggplot2? Saya saat ini punya
legend.position ="top"
yang secara otomatis menghasilkan legenda horizontal. Namun, jarak item sangat berdekatan dan saya bertanya-tanya bagaimana cara memberi jarak yang lebih jauh.
opts
disusutkan.Jawaban:
ggplot2 v3.0.0
dirilis pada Juli 2018 memiliki opsi kerja untuk dimodifikasilegend.spacing.x
,legend.spacing.y
danlegend.text
.Contoh: Meningkatkan jarak horizontal antara tombol legenda
Catatan: Jika Anda hanya ingin memperluas penspasian di sebelah kanan teks legenda, gunakan
stringr::str_pad()
Contoh: Pindahkan label kunci legenda ke bawah dan tambah jarak vertikal
Contoh: untuk
scale_fill_xxx
&guide_colorbar
Untuk legenda vertikal , pengaturan
legend.key.size
hanya meningkatkan ukuran tombol legenda, bukan spasi vertikal di antara merekaUntuk menambah jarak antar tombol legenda, diperlukan modifikasi
legend-draw.r
fungsi. Lihat masalah ini untuk info lebih lanjutsumber
Menurut saya opsi terbaik adalah menggunakan
guide_legend
dalamguides
:Perhatikan penggunaan
default.unit
, tidak perlu memuatgrid
paket.sumber
Perbaikan sederhana yang saya gunakan untuk menambahkan spasi di legenda horizontal, cukup tambahkan spasi di label (lihat ekstrak di bawah):
sumber
scale_fill_manual(values=values, labels=setNames(paste(labels, " "), entries))
.Sekarang yang
opts
tidak digunakan lagi dalamggplot2
paket, fungsitheme
harus digunakan sebagai gantinya:sumber
Untuk menambahkan spasi antar entri dalam legenda, sesuaikan margin elemen tema
legend.text
.Untuk menambahkan ruang 30pt di sebelah kanan setiap label legenda (mungkin berguna untuk legenda horizontal):
Untuk menambahkan ruang 30pt di sebelah kiri setiap label legenda (mungkin berguna untuk legenda vertikal):
untuk sebuah
ggplot2
objekp
. Kata kuncinya adalahlegend.text
danmargin
.[Catatan tentang edit: Saat jawaban ini pertama kali diposting, ada bug. Bug sekarang telah diperbaiki]
sumber
Sepertinya pendekatan terbaik (pada 2018) adalah menggunakan objek
legend.key.size
di bawahtheme
. (misalnya, lihat di sini ).Ini sangat mudah jika Anda menggunakan
theme_bw()
:Namun, ini tidak bekerja dengan baik jika tidak (misalnya, jika Anda memerlukan latar belakang abu-abu pada simbol legenda Anda):
Perhatikan bahwa kotak putih mulai memblokir judul legenda (dan akhirnya grafik itu sendiri jika kita terus meningkatkan nilainya).
Saya belum menemukan solusi untuk memperbaiki masalah di atas ... Beri tahu saya di komentar jika Anda punya ide, dan saya akan memperbaruinya sesuai dengan itu!
$layers
...sumber
legend.key
transparan:theme(legend.key = element_rect(size = 30,color=alpha("transparent",0)))
Dari karya Koshke di ggplot2 dan blognya (blog Koshke )
Ketik
theme_get()
di konsol untuk melihat atribut legenda lainnya yang dapat diedit.sumber
Gunakan salah satu dari ini
sumber