[R] learning about panel functions in lattice

Gabor Grothendieck ggrothendieck at gmail.com
Sun Jun 14 22:07:39 CEST 2009


2009/6/14 Juliet Hannah <juliet.hannah at gmail.com>:
> Hi All,
>
> I am trying to understand panel functions. Let's use this example.
>
>
> library(lattice)
> time<-c(rep(1:10,5))
> y <-time+rnorm(50,5,2)
> group<-c(rep('A',30),rep('B',20))
> subject<-c(rep('a',10),rep('b',10),rep('c',10),rep('d',10),rep('e',10))
> myData <-data.frame(subject,group,time,y)
> head(myData)
>
> Plot 1
>
> xyplot(y ~ time | group, data = myData, groups = subject,
>       panel = panel.superpose,
>       panel.groups = function(...)
>       panel.loess(...)
>       )
>
>
> Plot 2
>
> xyplot(y ~ time | group, data = myData, groups = subject,
>       panel = function(...) {
>       panel = panel.superpose(...)
>       panel.groups = function(...)
>       panel.loess(...)
>       })
>
> Why does Plot 2 not produce the loess curves? Why are points not
> plotted on Plot 1?

The above creates a function called panel.groups within the anonymous
panel function but that is meaningless.  In particular, its not even
accessible outside of the anonymous function and is never called
within the anonymous function so its never called  at all.

>
> Plot 3
>
> xyplot(y ~ time | group, data = myData, groups = subject,
>        panel = function(...) {
>          panel.superpose(...)
>          panel.superpose(panel.groups = panel.loess, ...)
>        })
>
> What is the effect of writing panel.superpose twice? What is it about
> this call that makes the data points
> appear on the graph?

The first superpose draws the points and the second draws the
loess curve.  Try instrumenting it with browser() calls (resulting
in a pause) and also adding a col attribute and it will become clearer:


xyplot(y ~ time | group, data = myData, groups = subject,
  panel = function(...) {
    browser()
    panel.superpose(..., col = "purple")
    browser()
    panel.superpose(panel.groups = panel.loess, col = "green", ...)
    browser()
  }
)


>
>
> Thanks,
>
> Juliet
>
> ______________________________________________
> 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.
>




More information about the R-help mailing list