[R] ggplot - adding regression lines

Ben Bolker bbolker at gmail.com
Thu Dec 13 01:06:51 CET 2012

soon yi <soon.yi <at> ymail.com> writes:

> Hi
> I am using ggplot to overlay two regression lines on a scatter plot each
> corresponding to a treatment group.
> The default plot gives a different slope for each treatment group. However,
> in some cases i want the lines to be parallel -ie no significant
> interaction. 
> My code:
> ggplot(data=df,X,Y,colour=treatment) + geom_point() +
> geom_smooth(method="lm")
> I think i use the 'formula' option in geom_smooth but have been unable to
> find a solution.

  I don't think you can actually do this entirely within ggplot.
  Instead I think you need something like

modelfit <- lm(Y~X+treatment,data=df)
newdata <- with(df,expand.grid(X=seq(min(X),max(X),length=41),
newdata$Y <- predict(modelfit,newdata)

ggplot(data=df,X,Y,colour=treatment) + geom_point() +

The confidence intervals are a little bit more work: see `?predict`
and `geom_ribbon` ...

More information about the R-help mailing list