R 如何为不同的“stat_smooth”线条添加图例,以及如何将其放置在左上角?

R 如何为不同的“stat_smooth”线条添加图例,以及如何将其放置在左上角?,r,ggplot2,smoothing,polynomials,R,Ggplot2,Smoothing,Polynomials,我有下一个情节: Plot您可以使用ggnewscale包将多个变量映射到同一美学(颜色)。然而,这使得图例的位置有点奇怪,所以我不知道如何正确放置它。下面是一个使用mtcars数据集的示例 库(ggplot2) 图书馆(ggnewscale) ggplot(mtcars、aes(显示、mpg))+ 几何点(aes(颜色=等效因子(vs)))+ 比例\颜色\离散()+ 新比例颜色()+ 统计平滑(method=“lm”,公式=y~x+I(x^2), aes(color=“x^2”),se=FA

我有下一个情节:


Plot您可以使用
ggnewscale
包将多个变量映射到同一美学(颜色)。然而,这使得图例的位置有点奇怪,所以我不知道如何正确放置它。下面是一个使用
mtcars
数据集的示例

库(ggplot2)
图书馆(ggnewscale)
ggplot(mtcars、aes(显示、mpg))+
几何点(aes(颜色=等效因子(vs)))+
比例\颜色\离散()+
新比例颜色()+
统计平滑(method=“lm”,公式=y~x+I(x^2),
aes(color=“x^2”),se=FALSE)+
统计平滑(method=“lm”,公式=y~x+I(x^3),
aes(color=“x^3”),se=FALSE+
统计平滑(method=“lm”,公式=y~x+I(x^4),
aes(color=“x^4”),se=FALSE)


由(v0.3.0)于2020-05-01创建

谢谢@teunbrand。一个疑问是,当我使用您的代码时,每个人(ID)都有一行代码。我应该怎么做才能不让每个人都有一行,而是让每个人都有一行?在你建议的修改之后,我更新了代码的外观。我找到了解决方案!!我刚刚在每个
stat\u smooth
中的
aes(color=“X^1”)
中添加了
group=1
。谢谢
Plot<- ggplot(df1,aes(x=RMS.V13AP, y=RMS.X16,colour=ID)) + 
  geom_point(size=1) +
  coord_capped_cart(bottom="both",left="both") +
  theme_bw() + 
  labs(x=expression(Acoustic~activity~(m.s^{-2})),y=expression(Real~activity~(m.s^{-2}))) + 
  theme(strip.background=element_blank(),
        axis.title.x =element_text(margin = margin(t = 2, r = 20, b = 0, l = 0),size = 16),
        axis.title.y =element_text(margin = margin(t = 2, r = 20, b = 0, l = 0),size = 16),
        axis.text.x = element_text(angle = 0, hjust = 0.5,size = 12),
        axis.text.y = element_text(angle = 0, hjust = 0.5,size = 14),
        strip.text.x = element_text(size = 14),
        strip.text.y = element_text(size = 13),
        axis.line = element_line(),
        panel.grid.major= element_blank(),
        panel.grid.minor = element_blank(),
        legend.text=element_text(size=12),
        legend.title = element_text(size=12, face = "bold"),
        legend.key=element_blank(),
        legend.position = "top",
        panel.border = element_blank(),
        strip.placement = "outside") +
  scale_x_continuous(breaks=c(0,0.025,0.050,0.075,0.095)) +
  guides(color=guide_legend(override.aes=list(fill=NA),nrow = 1 ))
Plot

Plot <-Plot + stat_smooth(method = "lm",formula= y ~ x, se=FALSE,colour="lightblue") +
  stat_smooth(method = "lm",formula= y ~ x + I(x^2), se=FALSE,colour="skyblue2")  +
  stat_smooth(method = "lm",formula= y ~ x + I(x^3), se=FALSE,colour="steelblue2")  +
  stat_smooth(method = "lm",formula= y ~ x + I(x^4), se=FALSE,colour="royalblue1")  +
  stat_smooth(method = "lm",formula= y ~ x + I(x^5), se=FALSE,colour="blue4") 
Plot