Usuń „a” z legendy, używając estetyki i geom_text

124

Jak mogę usunąć literę „a” z legendy wygenerowanej przez ten kod? Jeśli usunę geom_text, litera „a” nie pojawi się w legendzie. geom_textJednak chcę zatrzymać .

ggplot(data = iris, aes(x = Sepal.Length, y=Sepal.Width, shape = Species, colour = Species)) + 
   geom_point() + 
   geom_text(aes(label = Species))
user2700207
źródło

Odpowiedzi:

142

Ustawione show.legend = FALSEw 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)

Argument show_guidezmienił nazwę na show.legendin ggplot2 2.0.0( zobacz informacje o wersji ).


Przed- ggplot2 2.0.0:

Z show_guide = FALSEtakimi ...

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 )

wprowadź opis obrazu tutaj

Simon O'Hanlon
źródło
3
Ustawianie show.legendsię FALSEw ggplot2punkcie 3.2.1 usunie całkowicie legendę!
NelsonGon
14

Miałem podobny problem . Rozwiązanie Simona zadziałało dla mnie, ale potrzebny był niewielki zwrot akcji. Nie zdawałem sobie sprawy, że muszę dodać „show_guide = F” do argumentów geom_text, zamiast zastępować nim istniejące argumenty - co pokazuje rozwiązanie Simona. Dla nooba ggplot2 takiego jak ja nie było to takie oczywiste. Właściwy przykład użyłby kodu OP i po prostu dodałby brakujący argument w następujący sposób:

..
geom_text(aes(label=Species), show_guide = F) +
..
Nacięcie
źródło
9

Jak powiedział Nick

następujący kod nadal powodowałby błąd:

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

wprowadź opis obrazu tutaj

natomiast:

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

poza argumentem aes eliminuje znak a nad legendą

wprowadź opis obrazu tutaj

user2673238
źródło
Czy istnieje sposób na dostosowanie „a” do czegoś innego, takiego jak „r”?
asalimih
8

Możemy użyć guide_legend(override.aes = aes(...))do ukrycia „a” w legendzie.

Poniżej znajduje się krótki przykład tego, jak możesz użyć 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 = "")
  )
)

Utworzono 29.04.2019 przez pakiet reprex (v0.2.1)

Kamil Słowikowski
źródło
Myślę, że jest to lepsze rozwiązanie od przyjętego, ponieważ pozwala konkretnie usunąć z legendy literę „a”, podczas gdy inna estetyka może w razie potrzeby pozostać nietknięta.
Markel
1

Możesz także użyć show.legend = FALSEw argumentach polecenia, geom_label_repel()aby usunąć „a” z legendy. Więc zamiast

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 = "")
  )
)

możesz to zrobić,

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
źródło
0

Miałem podobny problem, z „a” pojawiającym się za różnymi kolorowymi punktami, którymi próbowałem oznaczyć geom_text_repel. Aby usunąć „a”, aby po prostu pokazywał punkt bez „a” za nim, musiałem dodać show.legend=FALSEjako argument in geom_text_repel.

Mam nadzieję, że ma to sens dla każdego, kto może pracować z tym samym problemem!

aranjdavis
źródło