[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