使用ggplot在同一图表上绘制两条回归线(在同一数据框的子集上计算)

DJa*_*ack 1 regression r ggplot2

我有这种数据框:

df<-data.frame(x=c(1,2,3,4,5,6,7,8,9,10),y=c(2,11,24,30,45,65,90,110,126,145), a=c(0.2,0.2,0.3,0.4,0.1,0.8,0.7,0.6,0.8,0.9))
Run Code Online (Sandbox Code Playgroud)

使用ggplot,我想在同一图上绘制两条回归线,根据条件(a>或<0.5)计算我的数据帧的子集.

在视觉上,我想要两个回归线:

df_a<-subset(df, df$a<0.5)

ggplot(df_a,aes(x,y))+ 
  geom_point(aes(color = a), size=3.5) + 
  geom_smooth(method="lm", size=1, color="black") +
  ylim(-5,155) +
  xlim(0,11)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

df_b<-subset(df, df$a>0.5)

ggplot(df_b,aes(x,y)) + 
  geom_point(aes(color = a), size=3.5) + 
  geom_smooth(method="lm", size=1, color="black") +
  ylim(-5,155) +
  xlim(0,11)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

出现在这个数字上:

ggplot(df,aes(x,y))+ geom_point(aes(color = a), size=3.5)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我试过par(new=TRUE)没有成功.

Spa*_*man 5

创建一个标志变量,并使用组:

df$small=df$a<0.5
ggplot(df,aes(x,y,group=small))+geom_point() + stat_smooth(method="lm")
Run Code Online (Sandbox Code Playgroud)

如果你愿意,可以拥有漂亮的颜色和传奇:

ggplot(df,aes(x,y,group=small,colour=small))+geom_point() + stat_smooth(method="lm")
Run Code Online (Sandbox Code Playgroud)

ggplot有两个适合

或许你想要点彩点:

ggplot(df,aes(x,y,group=small)) + 
   stat_smooth(method="lm")+geom_point(aes(colour=a))
Run Code Online (Sandbox Code Playgroud)

有色点