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

From: Deepayan Sarkar <deepayan.sarkar_at_gmail.com>
Date: Sat 08 Jul 2006 - 04:53:10 EST

On 7/7/06, Sebastian Luque <spluque@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@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 Received on Sat Jul 08 04:57:32 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Sat 08 Jul 2006 - 06:16:00 EST.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.