Reputation: 2093
How can I can remove the letter 'a' from the legend generated by this code? If I remove the geom_text
, then the 'a' letter will not show in the legend. I want to keep geom_text
, though.
ggplot(data = iris, aes(x = Sepal.Length, y=Sepal.Width,
shape = Species, colour = Species)) +
geom_point() +
geom_text(aes(label = Species))
Upvotes: 205
Views: 77550
Reputation: 1
In case it helps, even I'm nob.
stat_cor()
also needs show.legend=FALSE
to avoid "a".
Wasted time for me... ;)
Many thanks for all your contributions
Upvotes: 0
Reputation: 87
Building off the top answer. If you only wanted the geom_text()
to be visible but have that geom_point()
for the purposes of your legend you could set the alpha to 0 making it invisible but override it to 1 in the guides to force it to show.
ggplot(data = iris, aes(x = Sepal.Length, y=Sepal.Width,
shape = Species, colour = Species)) +
geom_point(alpha = 0) +
geom_text(aes(label = Species)) +
guides(color = guide_legend(override.aes = aes(label = "", alpha = 1)))
Upvotes: 3
Reputation: 59970
Set show.legend = FALSE
in 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)
The argument show_guide
changed name to show.legend
in ggplot2 2.0.0
(see release news).
Pre-ggplot2 2.0.0
:
With show_guide = FALSE
like so...
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)
Upvotes: 255
Reputation: 735
I had a similar problem, with an 'a' appearing behind different coloured points I was trying to label with geom_text_repel
. To remove the 'a', so that it would just show the point without the 'a' behind it, I had to add show.legend=FALSE
as an argument in geom_text_repel
.
Hope that makes sense to anyone who might be labouring with the same issue!
Upvotes: 5
Reputation: 770
You can also use show.legend = FALSE
in the arguments of geom_label_repel()
to remove the "a" in the legend.
So, instead of
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 = "")
)
)
you can do,
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 )
Upvotes: 3
Reputation: 4614
We can use guide_legend(override.aes = aes(...))
to hide the 'a' in the legend.
Below is a short example of how you might use 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 = "")
)
)
Created on 2019-04-29 by the reprex package (v0.2.1)
Upvotes: 35
Reputation: 2964
Like Nick said
the following code would still produce the error:
geom_text(aes(x=1,y=2,label="",show_guide=F))
whereas:
geom_text(aes(x=1,y=2,label=""),show_guide=F)
outside the aes argument eliminates the a over the legend
Upvotes: 8
Reputation: 3134
I had a similar problem. Simon's solution worked for me but a slight twist was required. I did not realise that I need to add "show_guide = F" to geom_text's arguments, rather than replace with it the existing arguments - which is what Simon's solution shows. For a ggplot2 noob like me this was not that obvious. A proper example would have used the OP's code and just added the missing argument like this:
..
geom_text(aes(label=Species), show_guide = F) +
..
Upvotes: 18