Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Colors lost in legend when using scale_shape_manual

Tags:

r

ggplot2

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?

like image 368
Peter Avatar asked Feb 23 '15 21:02

Peter


1 Answers

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

like image 143
Scott Avatar answered Oct 21 '22 13:10

Scott