Re: [R] Lattice: reasons for not passing subscripted "col", "pch", "lty", "fill" to panel functions

From: Deepayan Sarkar <>
Date: Thu, 03 Jul 2008 09:59:06 -0700

On 7/3/08, Vitalie Spinu <> wrote:
> Dear UseRs!
> I am really amazed by lattice capabilities but one thing is really beyond
> my understanding.
> I would like to have conditional plots with points inside each panel
> colored by groups "gr1" and "pched" by "gr2":
> xyplot(A~B|C,myD,col=gr1,pch=gr2) #this makes sense for me
> But this does not work, because "col","pch","lty","fill" etc. are passed
> directly to panel function and not subscripted by conditional variable C.
> The result is that the same truncated vectors col,pch,lty are used for all
> panels.
> I know I can write something like this to overcome the problem:
> xyplot(A~B|C,myD,col=gr1,pch=gr2,
> panel=function(x,y,...,subscripts,col,pch){
> panel.xyplot(x,y,col=col[subscripts],pch=pch[subscripts]
> )
> )
> but is so clumsy :(.
> Isn't it possible to have
> panel.XUZ(x,y,...,col=col[subscritps],...) or something
> like that? And dispense whith "groups" variable whatsoever?

Sure. Define

my.panel.xyplot <-

    function(x,y,...,subscripts,col,pch) {

        panel.xyplot(x,y,col=col[subscripts],pch=pch[subscripts], ...)     }

and change your call to

xyplot(A~B|C,myD,col=gr1,pch=gr2, panel = my.panel.xyplot)

If you don't like the extra 'panel' argument, you can set your panel function to be the default:

lattice.options(panel.xyplot = my.panel.xyplot)

-Deepayan mailing list PLEASE do read the posting guide and provide commented, minimal, self-contained, reproducible code. Received on Thu 03 Jul 2008 - 17:01:19 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 03 Jul 2008 - 17:31:47 GMT.

Mailing list information is available at Please read the posting guide before posting to the list.

list of date sections of archive