图例中的R ggplot散点图控制点&线条颜色

时间:2015-04-26 13:39:56

标签: r colors ggplot2 scatter-plot

我遇到了一些问题,即在图例中获取正确的颜色并控制线条颜色以分隔回归线。

输出应该是一个散点图,其中女性为红色正方形,男性为黑色圆点,图例显示正确的颜色,目前它没有。

其次,描绘线性模型的线应与正方形/点的颜色相同。 (例如,男性为黑色,女性为红色)

这就是我得到的:

http://prntscr.com/6ycwc0

# R version 3.1.2
# ggplot2_1.0.1
library(ggplot2)
# Reproducable Example
x <- c(20, 14, 19, 25, 17, 17, 18, 16, 8, 10, 25)
Sex <- c(2,2,2,2,2,1,1,1,1,1,1)
y <- c(0.116790,  0.065139,  0.362140, -2.328200, -0.348110,
       1.393600, -0.716200, -2.501600, 3.956400,  1.834400, -3.264200)
cordata <- data.frame(x,y,Sex)
cordata$Sex <- factor(cordata$Sex, labels=c("Males","Females"))

# Actual Plot:
ggplot(cordata, aes(x=x, y=y,shape=Sex)) +    
  geom_point(data= subset(cordata, cordata$Sex == "Males"),
             color="black", size = 4, show_guide = TRUE) + 
  geom_point(data= subset(cordata, cordata$Sex == "Females"),
             color="red", size = 4, show_guide = TRUE) + 

  scale_shape_manual(values=c(15,16)) + 

  guides(fill = guide_legend(override.aes = list(colour = NULL))) + 

  stat_smooth(aes(Sex = "Females"), method = "lm", se = FALSE, 
              color = "red", size = 1.5) + 
  stat_smooth(aes(Sex = "Males"), method = "lm", se = FALSE, 
              color = "black", size = 1.5) 

有人有任何想法吗?

如果发布错误,请注意;如果某处有明显的答案......但我找不到它。

1 个答案:

答案 0 :(得分:1)

不应为男性和女性添加两个单独的geom_pointstat_smooth图层,而应将其映射到colour,就像您已对shape所做的那样。

ggplot(cordata, aes(x=x, y=y,shape=Sex,colour=Sex)) +    
  geom_point(size=4) +
  scale_shape_manual(values=c(16,15)) + 
  scale_colour_manual(values=c("black","red")) +
  stat_smooth(aes(group=Sex,color=Sex), method = "lm", se = FALSE, 
           size = 1.5)