Hi, for the data below: time<-c(rep(1:10,5)) y<-time+rnorm(50,5,2) subject<-c(rep('a',10),rep('b',10),rep('c',10),rep('d',10),rep('e',10)) group<-c(rep('A',30),rep('B',20)) df<-data.frame(subject,group,time,y) I'd like to produce a plot with a single pannel with two loess curves one for each group. the code below does that but on two different pannels, I'd like to have both curves on the same pannel with different colors. xyplot(y~time|group, groups=subject, panel=function(...){ panel.loess(...) } ,data=df) -- Osman O. Al-Radi, MD, MSc, FRCSC Fellow, Cardiovascular Surgery The Hospital for Sick Children University of Toronto, Canada [[alternative HTML version deleted]]
Osman Al-Radi said the following on 10/5/2006 3:43 PM:> Hi, > > for the data below: > time<-c(rep(1:10,5)) > y<-time+rnorm(50,5,2) > subject<-c(rep('a',10),rep('b',10),rep('c',10),rep('d',10),rep('e',10)) > group<-c(rep('A',30),rep('B',20)) > df<-data.frame(subject,group,time,y) > > I'd like to produce a plot with a single pannel with two loess curves one > for each group. the code below does that but on two different pannels, I'd > like to have both curves on the same pannel with different colors. > > xyplot(y~time|group, groups=subject, > panel=function(...){ > panel.loess(...) > } > ,data=df) > >Simple: xyplot(y ~ time | group, data = df, groups = subject, panel = function(...) { panel.superpose(...) panel.superpose(panel.groups = panel.loess, ...) }) HTH, --sundar
On 10/5/06, Osman Al-Radi <osman.al.radi at gmail.com> wrote:> Hi, > > for the data below: > time<-c(rep(1:10,5)) > y<-time+rnorm(50,5,2) > subject<-c(rep('a',10),rep('b',10),rep('c',10),rep('d',10),rep('e',10)) > group<-c(rep('A',30),rep('B',20)) > df<-data.frame(subject,group,time,y) > > I'd like to produce a plot with a single pannel with two loess curves one > for each group. the code below does that but on two different pannels, I'd > like to have both curves on the same pannel with different colors. > > xyplot(y~time|group, groups=subject, > panel=function(...){ > panel.loess(...) > } > ,data=df)Well, the "fix" for your code is xyplot(y ~ time | group, data = df, groups = subject, panel = panel.superpose, panel.groups = function(...) panel.loess(...) ) Which, incidentally is effectively equivalent to xyplot(y ~ time | group, data = df, groups = subject, type = "smooth") However, this is not what you describe as your goal. If you want a single smooth for each group combining all subjects within that group, use something like xyplot(y ~ time, data = df, groups = group. ... The panel part does not change. -Deepayan