I have been battling for a long time now to find a way to change the legend key of a ggplot2 with a hexagon. Any help or guidance are highly appreciated!
library(ggplot2)
set.seed(123)
ggplot(iris)
geom_jitter(aes(x=Species,y=Sepal.Length,color=Species),width=0.25)
guides(color= guide_legend(override.aes = list(shape = 21)))
Created on 2021-11-13 by the reprex package (v2.0.1)
CodePudding user response:
You can create keys using grid
commands and then pass to a geom_
using the key_glyph
argument.
A quick example:
library(grid)
library(ggplot2)
draw_key_hex <- function (data, params, size) {
# hexagon vertex coordinates
v <- list(x = c(0.95, 0.725, 0.275, 0.05, 0.275, 0.725),
y = c(0.5, 0.110288568297003, 0.110288568297003, 0.5, 0.889711431702997, 0.889711431702997))
# hexagon grob
polygonGrob(v$x, v$y,
gp = gpar(col = data$colour,
fill = alpha(data$fill, data$alpha)))
}
set.seed(123)
ggplot(iris, aes(x=Species,y=Sepal.Length,color=Species))
geom_jitter(width=0.25, key_glyph=draw_key_hex)
# or with fill
set.seed(123)
ggplot(iris, aes(x=Species,y=Sepal.Length,color=Species, fill=Species))
geom_jitter(width=0.25, key_glyph=draw_key_hex)