[R] add trend line to each group of data in: xyplot(y1+y2 ~ x | grp...

Andy Bunn abunn at whrc.org
Fri Mar 10 19:03:03 CET 2006

Although this should be trivial, I'm having a spot of trouble.

I want to make a lattice plot of the format y1+y2 ~ x | grp but then fit a
lm to each y variable and add an abline of those models in different colors.
If the xyplot followed y~x|grp I would write a panel function as below, but
I'm unsure of how to do that with y1 and y2 without reshaping the data
before hand. Thoughts appreciated. -Andy

foo <- data.frame(y1 = 1:25+rnorm(100, -3, 1), y2 = 1:25+rnorm(100,3,1), x =
rep(1:25,4), grp = rep(letters[1:4],25))
# I want to add a trend line for y1 and y2 here:
xyplot(y1+y2 ~ x | grp, data = foo)
# like this example for just one y variable:
xyplot(y1~x|grp, data = foo, panel = function(x,y)
          { lm1 = lm(y~x)
            panel.points(x,y, col = "red")
            panel.abline(lm1, col = "red")
            #lm2 = lm(y~x) # model for y2
            #panel.points(x,y, col = "blue") #points for y2
            #panel.abline(lm2, col = "blue") #abline for y2

> version
platform i386-pc-mingw32
arch     i386
os       mingw32
system   i386, mingw32
major    2
minor    2.1
year     2005
month    12
day      20
svn rev  36812
language R

More information about the R-help mailing list