[R] Lattice: groups and no groups with panel.superpose

baptiste auguie ba208 at exeter.ac.uk
Sat Nov 15 17:59:31 CET 2008


Hi,

I think the following code should do what you want,


		 xyplot(yvar~year|week,data=df,layout = c(4, 5),
		        type='p',
		        groups = temp ,
		        panel = function(x, y, ...) {
		        panel.superpose(x, y, ...)
		        panel.abline(lm(y~x))
		        },
		        panel.groups = function(x, y, ..., lty) {
		                panel.xyplot(x, y, ..., lty = lty)
		                panel.abline(lm(y~x), lty=3, ...)
		        })

Hope this helps,

baptiste

On 15 Nov 2008, at 14:25, Robert Buitenwerf wrote:

>
> Dear R listers,
>
> I am trying to create a lattice plot with independent regression  
> lines per group
> for each panel, plus one overall regression line per panel. I  
> succeed in having
> the separate regression lines for each group per panel, but I can't  
> figure out
> how to add the overall regression line over all groups. I have  
> learnt a lot from
> the list, but I can't find an example for what I want to do...
>
> with the following example data (from another post):
>  years<-2000:2006
>  weeks<-1:20
>  yr<-rep(years,rep(length(weeks)*6,length(years)))
>  wk<-rep(weeks,rep(6,length(weeks)))
>  temp<-rep(4:9,length(years)*length(weeks))
>  yvar<-round(rnorm(length(years)*length(weeks)*6,mean=30,sd=4),0)
>  xvar<-(rnorm(length(years)*length(weeks)*6)+5)/10
>  df<-data.frame(year=yr,week=wk,temp=temp,       yvar=yvar,
>  xvar=xvar)
>
> I get the regression lines per group for each panel using:
>
>  xyplot(yvar~year|week,data=df,layout = c(4, 5),
>         type='p',
>         groups = temp ,
>         panel = panel.superpose,
>         panel.groups = function(x, y, ..., lty) {
>                 panel.xyplot(x, y, ..., lty = lty)
>                 panel.abline(lm(y~x), lty=3, ...)
>         })
>
> And obviously the overall regression lines with:
>
>  xyplot(yvar~year|week,data=df,layout = c(4, 5),
>         type='p',
>         panel = function(x, y, ...) {
>         panel.xyplot(x, y, ...)
>         panel.abline(lm(y~x))
>         })
>
> Any advice on how to "merge" the output from the two above graphs  
> would be
> greatly appreciated!
>
>
> Kind regards,
>
> Robert Buitenwerf
> Ecologist
> SAEON
> South Africa
> _________________________________________________________________
> [[elided Hotmail spam]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

_____________________________

Baptiste Auguié

School of Physics
University of Exeter
Stocker Road,
Exeter, Devon,
EX4 4QL, UK

Phone: +44 1392 264187

http://newton.ex.ac.uk/research/emag



More information about the R-help mailing list