Elimine 'a' de la leyenda cuando use estética y geom_text


124

¿Cómo puedo eliminar la letra 'a' de la leyenda generada por este código? Si elimino el geom_text, la letra "a" no se mostrará en la leyenda. Aunque quiero quedarme geom_text.

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

Respuestas:


142

Establecer show.legend = FALSEen 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)

El argumento show_guidecambió de nombre a show.legendin ggplot2 2.0.0( ver noticias del lanzamiento ).


Pre- ggplot2 2.0.0:

Con show_guide = FALSEcomo así ...

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 )

ingrese la descripción de la imagen aquí


3
Ajuste show.legenda FALSEen ggplot23.2.1 eliminará por completo la leyenda!
NelsonGon

14

Tuve un problema similar . La solución de Simon funcionó para mí, pero se requirió un ligero giro. No me di cuenta de que necesito agregar "show_guide = F" a los argumentos de geom_text, en lugar de reemplazar con él los argumentos existentes, que es lo que muestra la solución de Simon. Para un novato de ggplot2 como yo, esto no era tan obvio. Un ejemplo adecuado habría usado el código del OP y simplemente habría agregado el argumento faltante como este:

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

9

Como dijo Nick

el siguiente código aún produciría el error:

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

ingrese la descripción de la imagen aquí

mientras:

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

fuera del argumento aes elimina el a sobre la leyenda

ingrese la descripción de la imagen aquí


¿Hay alguna forma de personalizar la 'a' con algo más como 'r'?
asalimih

8

Podemos usar guide_legend(override.aes = aes(...))para ocultar la 'a' en la leyenda.

A continuación se muestra un breve ejemplo de cómo puede usar 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 = "")
  )
)

Creado el 2019-04-29 por el paquete reprex (v0.2.1)


Creo que esta es una solución mejor que la aceptada, ya que permite eliminar específicamente la letra 'a' de la leyenda, mientras que otras estéticas pueden, si se desea, permanecer intactas.
Markel

1

También puede utilizar show.legend = FALSEen los argumentos de geom_label_repel()para eliminar la "a" en la leyenda. Entonces, en lugar de

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

tu puedes hacer,

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  )

0

Tuve un problema similar, con una 'a' detrás de puntos de diferentes colores con los que estaba tratando de etiquetar geom_text_repel. Para eliminar la 'a', de modo que solo mostrara el punto sin la 'a' detrás, tuve que agregar show.legend=FALSEcomo argumento geom_text_repel.

¡Espero que tenga sentido para cualquiera que pueda estar trabajando con el mismo problema!

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.