[R] dotplot (lattice) with panel.segments and groups
Deepayan Sarkar
deepayan.sarkar at gmail.com
Fri Jul 7 20:53:10 CEST 2006
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.
More information about the R-help
mailing list