[R] Override col.lines and col.symbol in panel.xyplot with type='b'

Deepayan Sarkar deepayan.sarkar at gmail.com
Tue Apr 12 09:30:41 CEST 2011

On Mon, Apr 11, 2011 at 9:27 PM, Szumiloski, John
<john_szumiloski at merck.com> wrote:
> Dear useRs,
> I have a longitudinal experiment with several treatment groups, ~20 subjects per group, ~6 timepoints and a continuous dependent variable.  I have been successfully been using lattice::xyplot with this data.  However, I have been stumped with a particular application of it.
> I would like to use xyplot on my data, broken into treatment groups with the groups argument, using type='b' to show subjectwise longitudinal data.  So far so good, I have done this many times.  But now I wish to show the same data but having the color of the lines and symbols overridden in some arbitrary way, yet not without changing anything else about the plot, in particular the structure/topology of the plot from using the groups argument and type='b'.
> This requires using a panel function of some sort.

No, it does not. You are making things unnecessarily complicated.

When you use 'groups', colors are associated with levels of the
grouping variable, not individual rows of your data. So:

dat <- data.frame(Panel=rep(c('A','B'), each=4),
                  ID=factor(rep(letters[1:4], each=2)),
                  X=rep(c(0,1), times=4),

##### now for the arbitrary colors.  Let's highlight one subject red,
the rest black

myColor <- ifelse(levels(dat$ID) == "a", 2, 1)

xyplot(Y ~ X | Panel, data=dat, groups=ID,
       type='b', col = myColor,


More information about the R-help mailing list