Change the symbol in a legend key in ggplot2
ggplot2, r
Solution
Adapting code for this answer: The idea is to inhibit the `geom_text` legend, but to allow a legend for `geom_point`, but make the point size zero so the points are not visible in the plot, then set size and shape of the points in the legend in the `guides` statement
x <- rnorm(9); y <- rnorm(9); s <- rep(c("F","G","K"), each = 3)
df <- data.frame(x, y, s)
#
require(ggplot2)
#
ggplot(df, aes(x = x, y = y, colour = s, label = s)) +
geom_point(size = 0, stroke = 0) + # OR geom_point(shape = "") +
geom_text(show.legend = FALSE) +
guides(colour = guide_legend(override.aes = list(size = 5, shape = c(utf8ToInt("F"), utf8ToInt("K"), utf8ToInt("G"))))) +
scale_colour_discrete(name = "My name", breaks = c("F","K","G"), labels = c("Fbig","Kbig","Gbig"))
Problem
This R code produces a ggplot2 graph in which the legend key contains the letter "a" repeated in red, blue and green. ``` x <- rnorm(9); y <- rnorm(9); s <- rep(c("F","G","K"), each = 3) df <- data.frame(x, y, s) require(ggplot2) ggplot(df, aes(x = x, y = y, col = s, label = s)) + geom_text() + scale_colour_discrete(name = "My name", breaks = c("F","K","G"), labels = c("Fbig","Kbig","Gbig")) ``` I would like to replace the repeated "a" in the legend key with "F", "K" and "G". Is this possible please? Thank you.