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

时间:2013-08-09 16:52:04

标签: r ggplot2 regression

我有这种数据框:

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))

使用ggplot,我想在同一图上绘制两条回归线,根据条件(a&gt;或&lt; 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)

enter image description here

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)

enter image description here

出现在这个数字上:

ggplot(df,aes(x,y))+ geom_point(aes(color = a), size=3.5)

enter image description here

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

1 个答案:

答案 0 :(得分:5)

制作一个标志变量,并使用group:

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

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

ggplot(df,aes(x,y,group=small,colour=small))+geom_point() + stat_smooth(method="lm")

ggplot with two fits

或许你想要点彩点:

ggplot(df,aes(x,y,group=small)) + 
   stat_smooth(method="lm")+geom_point(aes(colour=a))

with coloured points