[R] dotplot (lattice) with panel.segments and groups

Gabor Grothendieck ggrothendieck at gmail.com
Fri Jul 7 21:00:08 CEST 2006


Could you explain what panel.groups= does and what the difference
is between panel.groups= and panel= ?  In ?xyplot it just says:

panel.groups: useful mostly for 'xyplot' and 'densityplot'. Applies
          when 'panel' is 'panel.superpose' (which happens by default
          in these cases if 'groups' is non-null)

which indicates when it might apply but not what it does.

Also can we assume from the above that the panel=panel.superpose
in your response could have been omitted?

Thanks.


On 7/7/06, Deepayan Sarkar <deepayan.sarkar at gmail.com> wrote:
> On 7/7/06, Sebastian Luque <spluque at gmail.com> wrote:
> > Hi,
> >
> > The following produces almost exactly what I needed.  The problems are
> > that the 'panel.dotplot' call (commented) generates the error 'Error in
> > NextMethod("[") : argument "subscripts" is missing, with no default'.
>
> It's just as it says: panel.dotplot wants a 'subscripts' argument when
> 'groups' is not null, and you have forgotten to give it one.
>
> > The
> > other problem is that the colors alternate between the levels of the 'site'
> > variable, rather than 'year'.
>
> It's doing what it's being told to do. You probably want something like
>
> dotplot(site ~ yield | variety, data=barley,
>        groups=year, yield2=barley$yield2,
>        col=c("gray", "black"),
>        panel = panel.superpose,
>        panel.groups = function(x, y, subscripts, yield2, col, ...) {
>            panel.xyplot(x, y, col = col, ...)
>            panel.segments(x, y, yield2[subscripts], y, col = col)
>        })
>
> Note that you don't want to use panel.dotplot here as it would draw a
> reference line both times. If you do want a reference line, add that
> in the panel function.
>
> The explicit use of 'col' should not have been necessary, i.e., the
> following should have worked:
>
> dotplot(site ~ yield | variety, data=barley,
>        groups=year, yield2=barley$yield2,
>        col=c("gray", "black"),
>        panel = panel.superpose,
>        panel.groups = function(x, y, subscripts, yield2, ...) {
>            panel.xyplot(x, y, col = ...)
>            panel.segments(x, y, yield2[subscripts], y, ...)
>        })
>
> I believe this doesn't work because of a grid bug. I'll take that up
> in a separate thread.
>
> -Deepayan
>
> >
> >
> > barley$yield2 <- with(barley, yield + 5)
> >
> > dotplot(site ~ yield | variety, data=barley, groups=year,
> >         yield2=barley$yield2, col=c("gray", "black"),
> >         panel=function(x, y, subscripts, yield2, ...) {
> >             ## panel.dotplot(x, y, ...)
> >             panel.segments(x, as.numeric(y),
> >                            yield2[subscripts], as.numeric(y), ...)
> >         })
> >
> > R> sessionInfo()
> > Version 2.3.1 (2006-06-01)
> > i486-pc-linux-gnu
> >
> > attached base packages:
> > [1] "methods"   "stats"     "graphics"  "grDevices" "utils"     "datasets"
> > [7] "base"
> >
> > other attached packages:
> >    chron  gmodels  lattice
> >  "2.3-3" "2.12.0" "0.13-8"
> >
> >
> > Can somebody please suggest how to properly make that 'panel.dotplot' call
> > and set the 'col' argument?  Thanks in advance.
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>



More information about the R-help mailing list