Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
455 views
in Technique[技术] by (71.8m points)

r - Colors lost in legend when using scale_shape_manual

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?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...