Colors lost in legend when using scale_shape_manua

2020-02-01 23:26发布

I am trying to plot points using filled shapes from position 21 of the shapes.

d <- data.frame(expand.grid(a=letters[1:4],
      b=factor(1:2)), y=rnorm(8),x=rnorm(8))

This works very well:

ggplot(d, aes(x=x, y=y,fill=a,color=a))  + 
      geom_point(aes(shape=b,fill=a),size=4) +
      scale_shape_manual(values=c(21,22))

I want to have the outline color of the shapes to be black, so I thought that setting color="black" outside the aes() would do the trick:

 ggplot(d, aes(x=x, y=y,fill=a,color=a))  + 
   geom_point(aes(shape=b,fill=a),color="black",size=4) + 
   scale_shape_manual(values=c(21,22))

This works inside the plot. However, the colors in the legends are all set to black.

How to get the legend as above?

标签: r ggplot2
1条回答
在下西门庆
2楼-- · 2020-02-01 23:50

For some reason, the fill legend defaults to shape symbol 1 (solid circle), so it shows the color rather than the fill aesthetic. Add this to the ggplot command:

  + guides(fill=guide_legend(override.aes=list(shape=21))) 

enter image description here

查看更多
登录 后发表回答