ggplot2 custom legend shapes

2019-05-01 23:59发布

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

1条回答
萌系小妹纸
2楼-- · 2019-05-02 00:52

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

查看更多
登录 后发表回答