194 votes

Suppression du 'a' de la légende lors de l'utilisation de l'esthétique et du geom_text

Comment puis-je supprimer la lettre 'a' de la légende générée par ce code ? Si je supprime la geom_text la lettre "a" n'apparaîtra pas dans la légende. Je veux garder geom_text mais

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

242voto

Simon O'Hanlon Points 27680

Définir show.legend = FALSE en 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)

L'argument show_guide a changé de nom pour devenir show.legend en ggplot2 2.0.0 ( voir les communiqués de presse ).


Pré- ggplot2 2.0.0 :

Avec show_guide = FALSE comme ça...

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

enter image description here

31voto

Kamil Slowikowski Points 1398

Nous pouvons utiliser guide_legend(override.aes = aes(...)) pour cacher le "a" dans la légende.

Vous trouverez ci-dessous un bref exemple de la manière dont vous pouvez utiliser l'option 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 = "")
  )
)

Créé le 2019-04-29 par le paquet reprex (v0.2.1)

17voto

Nick Points 157

J'avais un problème similaire . La solution de Simon a fonctionné pour moi, mais une légère modification était nécessaire. Je n'avais pas réalisé que je devais ajouter "show_guide = F" aux arguments de geom_text, plutôt que de remplacer avec lui les arguments existants - ce que montre la solution de Simon. Pour un noob de ggplot2 comme moi, ce n'était pas si évident. Un exemple correct aurait utilisé le code de l'OP et aurait juste ajouté l'argument manquant comme ceci :

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

8voto

user2673238 Points 807

Comme Nick l'a dit

le code suivant produirait toujours l'erreur :

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

enter image description here

alors que :

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

en dehors de l'argument aes élimine le a sur la légende

enter image description here

5voto

arranjdavis Points 297

J'ai eu un problème similaire, avec un "a" apparaissant derrière des points de couleur différente que j'essayais d'étiqueter avec geom_text_repel . Pour supprimer le "a", afin de montrer le point sans le "a" derrière lui, j'ai dû ajouter show.legend=FALSE comme argument dans geom_text_repel .

J'espère que cela a du sens pour tous ceux qui sont confrontés au même problème !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X