Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ggplot2 custom legend shapes

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?

enter image description here

like image 251
Ali Avatar asked Nov 19 '12 15:11

Ali


1 Answers

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.

enter image description here

like image 86
Sven Hohenstein Avatar answered Oct 12 '22 23:10

Sven Hohenstein