[R] panel.linejoin groups

Deepayan Sarkar deepayan.sarkar at gmail.com
Fri Sep 23 20:01:07 CEST 2005


On 9/23/05, Erin Berryman <berr0179 at umn.edu> wrote:
> Dear R community,
>
> I am still new to R, but I am attempting to use it for (hopefully) all
> my plotting needs. I have been using lattice and Hmisc for most plots
> so far successfully, but I need help creating a plot I desire for some
> new data I have.
> This data frame consists of the same type of measurement (Eh) for 27
> different locations. I have 8000+ measurements for each location, and
> my datalogger organizes the output like this:
>
> Date                                    A1L                     A2L                     A3L
> 2005-07-14 22:00                208.1           -178.5          196.8
> 2005-07-14 22:10                207.9           -184.3          200.0
>
> Now I'm having trouble plotting A1L, A2L, A3L on the same plot as a
> function of Date. I thought I would try panel.linejoin, like so:
>
> xyplot(data=redox2, A1L + A2L + A3L ~ Date,
> panel=function(x,y,...){panel.linejoin(x,y,horizontal=F,col=1,...)},
> scales=list(x=list(tick.number=10)))
>
> But of course, what I get is the mean of the measurements from those
> three columns plotted as one line, when what I want is a separate line
> for each column of data. Do I need to define "groups" somehow to get
> separate lines? If so, how do I define groups based on membership in
> different columns? Or do I just need to reorganize my data to make it
> work, like this:
>
> Date                            Location                Eh
> 2005-07-14 22:00        A1L                     208.1
> 2005-07-14 22:00        A2L                     -178.5
>
> Then I can define groups=Location, and it would work.  But it would be
> good to know if I can make the data work as is - because I have many
> many more datasets that are structured this way.

Yes, simply supply 'panel.groups' instead of 'panel'

panel.groups = function(x,y,...) { panel.linejoin(x,y,horizontal=F,col=1,...) },

panel.linejoin doesn't know anything about groups, and has to be used
through panel.superpose (which does). However, the more obvious
approach seems to be

xyplot(A1L + A2L + A3L ~ Date, data=redox2,
       type = 'l',
       scales=list(x=list(tick.number=10)))

Does that not work? panel.linejoin is meant for cases where several
observations need to be summarized by a single number (mean, median,
etc).

BTW, it's not a good idea to have anything other than the formula as
the first argument to xyplot etc.

Deepayan




More information about the R-help mailing list