[R] using perm.cond & index.cond in lattice package
deepayan at stat.wisc.edu
Mon Jul 5 20:02:57 CEST 2004
On Monday 05 July 2004 09:57, 8rino-Luca Pantani wrote:
> Dear R users,
> this is my first question to the list.
> I hope it will be not a trivial one.
> My problem is to change the order in which the panel are plotted in a
> lattice/Trellis plot.
> I've read the S-plus Trellis Graphics user manual, in which there is
> a function called "reorder.factor",
Hmm, I didn't know about this function, but it seems easy enough to
define. In fact the groupedData() constructor in nlme does this, and
that can be adapted to have
reorder.factor <- function(Factor, X, Function = mean, ...)
levels = names(sort(tapply(X, Factor, Function, ...))))
which you may then use.
> that, as far as I can catch from ?xyplot, in the lattice package is
> substituted by two others:
> "index.cond" & "perm.cond"
> bwplot(Y~TREAT|LOCATION, data=mydframe)
> #The panels are plotted in alphabetical order, but I would rather
> have something like
> bwplot(Y~TREAT|OM, data=mydframe)
> # i.e. the panels ordered by OM (Organic Matter) content
> #but with LOCATION written in the strip.
> #str(bwplot(Y~TREAT|OM, data=mydframe))
> #I can see that
> # $ index.cond :List of 1
> # ..$ : int [1:4] 1 2 3 4
> # $ perm.cond : num 1
> #so I tried
You might as well just have
> #and it seems to work, but without the darker tag for OM in the
The darker portion has to do with the default 'style' in the strip
function. It's always there for numeric (shingle) variables. For
factors, S-PLUS defaults to style=3, which shows the darker parts,
while lattice default to style=1, which doesn't.
> Now I have one perplexity and one question:
> The last "list((1:4)[order(...." works fine, but it seems to me
> inelegant, too complicate and not practical for plots with more
> factors. Any suggestion to simplify/improve the matter?
As a matter of fact, I'm working on something like this for a future
version of lattice. But in your example, where you know beforehand how
your factor levels should be ordered, I think you should just define
your factor properly. e.g.,
LOCATION = factor(rep(rep(c(5, 1, 3, 7), each=3), 2),
levels = c(1, 3, 5, 7),
labels = c("there1%OM", "elsewhere3%OM",
What's happening now is that LOCATION is defined as a character vector,
which is eventually coerced to a factor with levels in the default (in
this case undesirable) order.
> How can I keep the tags in the strips, still ordering the panels by
You need to add something like
strip = function(..., style) strip.default(..., style = 3)
to your bwplot call.
> Thanks in advance.
> The following lines are copied from ?xyplot
> (I suspect that "order.cond" stands for "index.cond",
> since I cannot find it in any other page of the lattice help, nor in
> the general help)
You are right. I'll fix that.
More information about the R-help