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

R ggplot scatterplot controlling point in legend & line color

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

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

其次,描绘线性模型的线条应与 squares/dots 颜色相同。 (例如,黑色代表男性,红色代表女性)

这是我得到的:

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) 

有人有什么想法吗?

抱歉,如果发布有误;如果某处有明显的答案...但我一直没能找到。

与其为男性和女性添加两个单独的层 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)