Entfernen Sie 'a' aus der Legende, wenn Sie Ästhetik und geom_text verwenden

124

Wie kann ich den Buchstaben 'a' aus der durch diesen Code generierten Legende entfernen? Wenn ich das entferne geom_text, wird der Buchstabe 'a' in der Legende nicht angezeigt. Ich möchte aber behalten geom_text.

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

Antworten:

142

Set show.legend = FALSEin 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)

Das Argument show_guideNamen geändert show.legendin ggplot2 2.0.0( siehe Presseinformation ).


Pre- ggplot2 2.0.0:

Mit show_guide = FALSEso ...

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 )

Geben Sie hier die Bildbeschreibung ein

Simon O'Hanlon
quelle
3
Einstellung show.legendzu FALSEin ggplot23.2.1 wird die Legende sogar komplett löschen!
NelsonGon
14

Ich hatte ein ähnliches Problem . Simons Lösung funktionierte für mich, aber eine leichte Wendung war erforderlich. Ich wusste nicht, dass ich muss hinzufügen „show_guide = F“ auf geom_text Argumente, anstatt zu ersetzen damit die bisherigen Argumente - das ist, was Lösung zeigt Simon ist. Für einen ggplot2-Noob wie mich war das nicht so offensichtlich. Ein richtiges Beispiel hätte den Code des OP verwendet und nur das fehlende Argument wie folgt hinzugefügt:

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

Wie Nick sagte

Der folgende Code würde immer noch den Fehler erzeugen:

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

Geben Sie hier die Bildbeschreibung ein

wohingegen:

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

außerhalb des aes-Arguments wird das a über der Legende entfernt

Geben Sie hier die Bildbeschreibung ein

user2673238
quelle
Gibt es eine Möglichkeit, das 'a' an etwas anderes wie 'r' anzupassen?
Asalimih
8

Wir können guide_legend(override.aes = aes(...))das 'a' in der Legende ausblenden.

Unten finden Sie ein kurzes Beispiel für die Verwendung von 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 = "")
  )
)

Erstellt am 2019-04-29 durch das reprex-Paket (v0.2.1)

Kamil Slowikowski
quelle
Ich denke, dies ist eine bessere Lösung als die akzeptierte, da es ermöglicht, den Buchstaben "a" gezielt aus der Legende zu entfernen, während andere Ästhetiken, falls gewünscht, unberührt bleiben können.
Markel
1

Sie können auch show.legend = FALSEdie Argumente von verwenden geom_label_repel(), um das "a" in der Legende zu entfernen. Also statt

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

du kannst tun,

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
quelle
0

Ich hatte ein ähnliches Problem mit einem 'a' hinter verschiedenfarbigen Punkten, mit denen ich beschriften wollte geom_text_repel. Um das 'a' zu entfernen, so dass es nur den Punkt ohne das 'a' dahinter zeigt, musste ich show.legend=FALSEals Argument hinzufügen geom_text_repel.

Hoffe, das macht Sinn für jeden, der mit dem gleichen Problem arbeitet!

arranjdavis
quelle