Hapus 'a' dari legenda saat menggunakan aesthetics dan geom_text

124

Bagaimana saya bisa menghapus huruf 'a' dari legenda yang dibuat oleh kode ini? Jika saya menghapus geom_text, maka huruf 'a' tidak akan ditampilkan di legenda. Saya ingin menyimpannya geom_text.

ggplot(data = iris, aes(x = Sepal.Length, y=Sepal.Width, shape = Species, colour = Species)) + 
   geom_point() + 
   geom_text(aes(label = Species))
pengguna2700207
sumber

Jawaban:

142

Diatur show.legend = FALSEdi geom_text:

ggplot(data = iris,
       aes(x = Sepal.Length, y = Sepal.Width, colour = Species, shape = Species, label = Species)) + 
    geom_point() +
    geom_text(show.legend = FALSE)

Argumen show_guideberubah nama menjadi show.legenddalam ggplot2 2.0.0( lihat rilis berita ).


Sebelum ggplot2 2.0.0:

Dengan show_guide = FALSEbegitu ...

ggplot( data=iris, aes(x=Sepal.Length, y=Sepal.Width , colour = Species , shape = Species, label = Species ) , size=20 ) + 
geom_point()+
geom_text( show_guide  = F )

masukkan deskripsi gambar di sini

Simon O'Hanlon
sumber
3
Pengaturan show.legenduntuk FALSEdi ggplot23.2.1 akan menghapus legenda sama sekali!
NelsonGon
14

Saya memiliki masalah serupa . Solusi Simon berhasil untuk saya tetapi diperlukan sedikit perubahan. Saya tidak menyadari bahwa saya perlu menambahkan "show_guide = F" ke argumen geom_text, daripada menggantinya dengan argumen yang ada - yang ditunjukkan oleh solusi Simon. Untuk ggplot2 noob seperti saya ini tidak begitu jelas. Contoh yang tepat akan menggunakan kode OP dan hanya menambahkan argumen yang hilang seperti ini:

..
geom_text(aes(label=Species), show_guide = F) +
..
Nick
sumber
9

Seperti kata Nick

kode berikut masih akan menghasilkan kesalahan:

geom_text(aes(x=1,y=2,label="",show_guide=F))

masukkan deskripsi gambar di sini

sedangkan:

geom_text(aes(x=1,y=2,label=""),show_guide=F)

di luar argumen aes menghilangkan a di atas legenda

masukkan deskripsi gambar di sini

pengguna2673238
sumber
Apakah ada cara untuk menyesuaikan 'a' menjadi sesuatu yang lain seperti 'r'?
asalimih
8

Kita bisa gunakan guide_legend(override.aes = aes(...))untuk menyembunyikan 'a' di legenda.

Di bawah ini adalah contoh singkat bagaimana Anda dapat menggunakan guide_legend ()

library(ggrepel)
#> Loading required package: ggplot2

d <- mtcars[c(1:8),]

p <- ggplot(d, aes(wt, mpg)) +
  geom_point() +
  theme_classic(base_size = 18) +
  geom_label_repel(
    aes(label = rownames(d), fill = factor(cyl)),
    size = 5, color = "white"
  )

# Let's see what the default legend looks like.
p

# Now let's override some of the aesthetics:
p + guides(
  fill = guide_legend(
    title = "Legend Title",
    override.aes = aes(label = "")
  )
)

Dibuat pada 2019-04-29 oleh paket reprex (v0.2.1)

Kamil Slowikowski
sumber
Saya pikir ini adalah solusi yang lebih baik daripada yang diterima, karena memungkinkan untuk secara khusus menghapus huruf 'a' dari legenda, sementara estetika lainnya, jika diinginkan, tetap tidak tersentuh.
Markel
1

Anda juga dapat menggunakan show.legend = FALSEargumen geom_label_repel()untuk menghapus "a" di legenda. Jadi, bukan

ggplot(d, aes(wt, mpg)) +
  geom_point() +
  theme_classic(base_size = 18) +
  geom_label_repel(
    aes(label = rownames(d), fill = factor(cyl)),
    size = 5, color = "white"
  )+ guides(
  fill = guide_legend(
    title = "Legend Title",
    override.aes = aes(label = "")
  )
)

Anda dapat melakukan,

ggplot(d, aes(wt, mpg)) +
  geom_point() +
  theme_classic(base_size = 18) +
  geom_label_repel(
    aes(label = rownames(d), fill = factor(cyl)),
    size = 5, color = "white",
    show.legend = FALSE  )
R. Andres Castaneda
sumber
0

Saya memiliki masalah serupa, dengan 'a' muncul di belakang titik warna berbeda yang saya coba beri label geom_text_repel. Untuk menghapus 'a', sehingga itu hanya akan menunjukkan titik tanpa 'a' di belakangnya, saya harus menambahkan show.legend=FALSEsebagai argumen di geom_text_repel.

Harapan yang masuk akal bagi siapa saja yang mungkin mengalami masalah yang sama!

arranjdavis.dll
sumber