ggplot2 custom legend shapes

ggplot2, legend, r, scatter-plot, shapes

Solution

It is possible to manually change the properties of the legend using `guides`:

ggplot(foo, aes(x = length, y = height, color=group, shape=quality)) + 
  geom_point(size=5) + 
  guides(colour = guide_legend(override.aes = list(shape = 15)))

Just play around with the `shape` paramater to find an appropriate shape.

Problem

When we have both shape and color legend in scatter plot, the shape of color legend is misleading: ``` foo <- data.frame( length=runif(10), height=runif(10), group=as.factor(sample(3,10,rep=T)), quality=as.factor(sample(2,10,rep=T)) ) ggplot(foo, aes(x = length, y = height, color=group, shape=quality)) + geom_point(size=5) ``` This will produce the plot below. As you see, the "circle" shape is reserved for the objects of `quality==1`, however in the `group` legend, all 3 groups are presented in "circle" shapes - with different colors, this can be misleading. It was too much better if the `group` legend was represented by a shape not already reserved for a specific purpose, like just to fill the whole legend item with the specific color. Do you have any simple idea how to solve this?

Original source