2013-08-09 5 views
1

У меня такой кадр данных:Участок две линии регрессии (в расчете на подмножества одного и того же кадра данных) на одном графике с ggplot

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> или < 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) без успеха.

ответ

5

Сделать переменный флаг и использовать группу:

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

Смежные вопросы