hapus judul legenda di ggplot


111

Saya mencoba untuk menghapus judul legenda di ggplot2:

df <- data.frame(
  g = rep(letters[1:2], 5),
  x = rnorm(10),
  y = rnorm(10)
)

library(ggplot2)
ggplot(df, aes(x, y, colour=g)) +
  geom_line(stat="identity") + 
  theme(legend.position="bottom")

masukkan deskripsi gambar di sini

Saya telah melihat pertanyaan ini dan tidak ada solusi di sana yang tampaknya berhasil untuk saya. Sebagian besar memberikan kesalahan tentang bagaimana optsditinggalkan dan digunakan themesebagai gantinya. Saya juga sudah mencoba berbagai versi theme(legend.title=NULL), theme(legend.title=""), theme(legend.title=element_blank), pesan dll Khas kesalahan adalah:

'opts' is deprecated. Use 'theme' instead. (Deprecated; last used in version 0.9.1)
'theme_blank' is deprecated. Use 'element_blank' instead. (Deprecated; last used in version 0.9.1)

Saya menggunakan ggplot2untuk pertama kalinya sejak versi 0.9.3 dirilis dan saya merasa sulit untuk menavigasi beberapa perubahan ...


5
Anda dapat menggunakan labs()untuk ini: Tambahkan baris labs(colour = "")ke kode Anda yang menghasilkan grafik di atas.
Dennis

Jawaban:


191

Anda hampir sampai: tambahkan saja theme(legend.title=element_blank())

ggplot(df, aes(x, y, colour=g)) +
  geom_line(stat="identity") + 
  theme(legend.position="bottom") +
  theme(legend.title=element_blank())

Halaman di Cookbook untuk R ini memberikan banyak detail tentang cara menyesuaikan legenda.


2
Ini akan menghapus semua judul legenda. Untuk kontrol lokal yang lebih banyak, guide = guide_legend()perintah berfungsi. Untuk menghapus judul legenda isi, tetapi untuk mempertahankan judul legenda warna, misalnyascale_fill_brewer(palette = "Dark2", guide = guide_legend(title = NULL)) + scale_color_manual(values = c("blue", "white", "red"))
PatrickT

9

Ini juga berfungsi dan juga menunjukkan cara mengubah judul legenda:

ggplot(df, aes(x, y, colour=g)) +
  geom_line(stat="identity") + 
  theme(legend.position="bottom") +
  scale_color_discrete(name="")

7
Ini menggantikan judul dengan string kosong dan karena itu menyebabkan spasi ekstra antara label dan kotak legenda, yang hanya akan terlihat jika legenda memiliki kotak atau latar belakang dengan warna yang berbeda dari tempat posisinya. Jadi tidak apa-apa untuk pendekatan cepat dan siap dalam kasus sederhana seperti theme_bw()tetapi bukan yang terbaik dalam kasus di mana legenda memiliki kotak di sekitarnya dan diposisikan di suatu tempat di area plot (pendekatan saya yang biasa).
PatrickT

1
1 untuk observasi. saya punya masalah menggunakan dua legenda berbeda dan spasi di antara mereka yang dibuat oleh solusi di atas. Pengaturan scale_color_manual(name=element_blank())+untuk legenda yang lebih rendah menyelesaikannya untuk saya
joaoal

@joaoal, element_blank()tampaknya menjadi pendekatan yang direkomendasikan. Setting name = NULL adalah cara lain.
PatrickT

1

Pilihan lain menggunakan labsdan mengatur warna ke NULL.

ggplot(df, aes(x, y, colour = g)) +
  geom_line(stat = "identity") +
  theme(legend.position = "bottom") +
  labs(colour = NULL)

masukkan deskripsi gambar di sini


0

Untuk Error: 'opts' is deprecated. Gunakan theme()sebagai gantinya. (Tidak berfungsi; terakhir digunakan dalam versi 0.9.1) 'Saya diganti opts(title = "Boxplot - Candidate's Tweet Scores")dengan labs(title = "Boxplot - Candidate's Tweet Scores"). Berhasil!


0

Karena Anda mungkin memiliki lebih dari satu legenda dalam satu plot, cara untuk secara selektif menghapus hanya satu judul tanpa meninggalkan ruang kosong adalah dengan mengatur nameargumen scale_fungsinya NULL, yaitu

scale_fill_discrete(name = NULL)

(pujian untuk @pascal untuk komentar di utas lain )

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.