Sebastian Luque
2006-Jul-07 15:33 UTC
[R] dotplot (lattice) with panel.segments and groups
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'. The
other problem is that the colors alternate between the levels of the
'site'
variable, rather than 'year'.
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.
Cheers,
--
Seb
Gabor Grothendieck
2006-Jul-07 16:15 UTC
[R] dotplot (lattice) with panel.segments and groups
It seems to work if you handle the col= argument explicitly.
Suggest you double check this since I have not carefully done so:
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, groups, yield2, col, ...) {
panel.dotplot(x, y, ...)
panel.segments(x, as.numeric(y),
yield2[subscripts], as.numeric(y),
col = col[groups[subscripts]], ...)
})
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'. The
> other problem is that the colors alternate between the levels of the
'site'
> variable, rather than 'year'.
>
>
> 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.
>
>
> Cheers,
>
> --
> Seb
>
> ______________________________________________
> 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
>
Deepayan Sarkar
2006-Jul-07 18:53 UTC
[R] dotplot (lattice) with panel.segments and groups
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.
Possibly Parallel Threads
- dotplot points color
- how to add a vertical line for each panel in a lattice dotplot with log scale?
- lattice dotplot labelling median and mean values for each panel
- Dotplot (package Hmisc) with groups: colours and symbols
- color of error bars in Dotplot (Hmisc)