Mematikan beberapa legenda di ggplot

221

Misalkan saya punya ggplot dengan lebih dari satu legenda.

mov <- subset(movies, length != "")
(p0 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  geom_point()
)

Saya dapat mematikan tampilan semua legenda seperti ini:

(p1 <- p0 + theme(legend.position = "none"))

Melewati show_guide = FALSEke geom_point(per pertanyaan ini ) mematikan legenda bentuk.

(p2 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  geom_point(show_guide = FALSE)
)

Tetapi bagaimana jika saya ingin mematikan legenda warna saja? Tampaknya tidak ada cara untuk memberitahu show_guidelegenda mana untuk menerapkan perilakunya. Dan tidak ada show_guideargumen untuk skala atau estetika.

(p3 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  scale_colour_discrete(show_guide = FALSE) +
  geom_point()
)
# Error in discrete_scale

(p4 <- ggplot(mov, aes(year, rating, shape = mpaa)) +
  aes(colour = length, show_guide = FALSE) +
  geom_point()
)
#draws both legends

Pertanyaan ini menunjukkan bahwa cara modern (sejak ggplot2 v0.9.2) mengendalikan legenda adalah dengan guidesfungsinya.

Saya ingin dapat melakukan sesuatu seperti

p0 + guides(
  colour = guide_legend(show = FALSE) 
)

tetapi guide_legendtidak memiliki argumen acara.

Bagaimana cara menentukan legenda yang ditampilkan?

Richie Cotton
sumber
6
Setelah ggplot2pembaruan terbaru , show_guidetelah ditinggalkan dan diganti oleh show.legend.
PatrickT

Jawaban:

294

Anda dapat menggunakan guide=FALSEdi scale_..._...()legenda menekan.

Sebagai contoh, Anda harus menggunakan scale_colour_continuous()karena lengthvariabel kontinu (bukan diskrit).

(p3 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
   scale_colour_continuous(guide = FALSE) +
   geom_point()
)

Atau menggunakan fungsi guides()Anda harus menetapkan FALSEuntuk elemen yang / estetika yang Anda tidak ingin tampil sebagai legenda, misalnya, fill, shape, colour.

p0 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) +
  geom_point()    
p0+guides(colour=FALSE)

MEMPERBARUI

Kedua solusi yang disediakan bekerja di ggplot2versi 2.0.0 baru tetapi moviesdataset tidak lagi ada di perpustakaan ini. Alih-alih, Anda harus menggunakan paket baru ggplot2moviesuntuk memeriksa solusi itu.

library(ggplot2movies)
data(movies)
mov <- subset(movies, length != "")
Didzis Elferts
sumber
6
Scale_colour_continuous (panduan = FALSE) tidak berfungsi di ggplot2 0.9.3 tetapi panduan (warna = FALSE) menyelesaikan masalah. Terima kasih banyak Didzis!
Nikolay Nenov
1
@NikolayNenov Strange, karena kedua solusi bekerja untuk saya dengan ggplot2 0.9.3.1
Didzis Elferts
9
Saya ingin menghapus legenda alpha . guides(alpha=FALSE)lakukan triknya. Terima kasih, Didzis.
10o0
3
Catatan untuk diri sendiri: jika Anda memiliki geom_linerange()dan legenda itu menunjukkan tanda silang, bukan garis, masukkan show.legend=FALSEdi dalamnya geom_linerange().
PatrickT
25

Anda bisa menambahkan show.legend=FALSEke geom untuk menekan legenda yang sesuai

fc9.30
sumber