我遇到了一些问题,即在图例中获取正确的颜色并控制线条颜色以分隔回归线。
输出应该是一个散点图,其中女性为红色正方形,男性为黑色圆点,图例显示正确的颜色,目前它没有。
其次,描绘线性模型的线应与正方形/点的颜色相同。 (例如,男性为黑色,女性为红色)
这就是我得到的:
# 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)
有人有任何想法吗?
如果发布错误,请注意;如果某处有明显的答案......但我找不到它。
答案 0 :(得分:1)
不应为男性和女性添加两个单独的geom_point
和stat_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)