Re: [R] Controlling text and strip arrangement in xyplot

From: Mark Difford <mark_difford_at_yahoo.co.uk>
Date: Tue, 19 Jun 2007 12:34:59 -0700 (PDT)

Hi Deepayan,

I, and probably quite a few others, will find this very useful until you find the time to wrap up a proper implementation.

Many thanks,

BestR,
Mark.

Deepayan Sarkar wrote:
>
> On 6/19/07, Juan Pablo Lewinger <lewinger@usc.edu> wrote:

>> I've searched the archives and read the xyplot help but can't figure
>> out the 2 lattice questions below?
>>
>> Consider:
>>
>> library(lattice)
>> DF <- data.frame(x=rnorm(20), y=rnorm(20), g1=rep(letters[1:2], 10),
>>                   g2=rep(LETTERS[1:2], each=10),
>> g3=rep(rep(letters[3:4],each=5),2))
>>
>> xyplot(y ~ x | g1 + g2, groups=g3, data=DF)
>>
>> 1) Is there a way to get one strip per row and column of panels as
>> below instead of the default?
>>
>>
>>         _|__a__|__b__|
>>          |
>>        B
>>          |
>>         --
>>          |
>>        A
>>          |

>
> This has been discussed on the list before (if I remember correctly), and
> I
> have been meaning to add something to the latticeExtra package. An
> implementation would look something like this (beware of line wrapping):
>
>
> useOuterStrips <-
> function(x,
> strip = strip.default,
> strip.left = strip.custom(horizontal = FALSE))
> {
> dimx <- dim(x)
> stopifnot(inherits(x, "trellis"))
> stopifnot(length(dimx) == 2)
> opar <- if (is.null(x$par.settings)) list() else x$par.settings
> par.settings <-
> modifyList(opar,
> list(layout.heights =
> list(strip = c(rep(0, dimx[2]-1), 1)),
> layout.widths =
> list(strip.left = c(1, rep(0, dimx[1]-1)))))
> update(x,
> par.settings = par.settings,
> strip = function(which.given, which.panel, ...) {
> if (which.given == 1)
> strip(which.given = 1,
> which.panel = which.panel[1],
> ...)
> },
> strip.left = function(which.given, which.panel, ...) {
> if (which.given == 2)
> strip.left(which.given = 1,
> which.panel = which.panel[2],
> ...)
> },
> par.strip.text = list(lines = 0.5),
> layout = dimx)
> }
>
>
> The function acts on a "trellis" object and returns an updated one, so
> for your example, it would work like:
>
> useOuterStrips(xyplot(y ~ x | g1 + g2, groups=g3, data=DF))
>
>
>> 2) How do I control the text of the strips so that for instance
>> instead of "a" and "b" it reads"g1=alpha", "g1=beta" where "alpha"
>> and "beta" stand for the corresponding greek symbols? (my difficulty
>> here is not with the plotmath symbols but with controlling the text
>> of the strips directly from the call to xyplot and not by renaming
>> the levels of g1)

>
> Generally speaking, you need to write your own strip function. The
> default (strip.default) has some useful arguments that modify its
> behaviour, and in particular 'factor.levels' might do what you
> want. If you are going to do this in conjunction with (1), life will
> actually be simpler and you can get away with using strip.custom():
>
>
> useOuterStrips(xyplot(y ~ x | g1 + g2, groups=g3, data=DF),
> strip =
> strip.custom(factor.levels =
> expression(g[1]==alpha, g[1]==beta)),
> strip.left =
> strip.custom(horizontal = FALSE,
> factor.levels =
> expression(g[2]==gamma, g[2]==delta)))
>
>
> Otherwise, you will really have to write a proper strip function that
> calls strip.default() with different values of 'factor.levels'
> depending on the value of 'which.given'.
>
> Note also the 'strip.names' and 'sep' argument of strip.default(),
> which might be more in line with what you want to do.
>
> -Deepayan
>
> ______________________________________________
> 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
> and provide commented, minimal, self-contained, reproducible code.
>
>
-- 
View this message in context: http://www.nabble.com/Controlling-text-and-strip-arrangement-in-xyplot-tf3944756.html#a11201335
Sent from the R help mailing list archive at Nabble.com.

______________________________________________
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
and provide commented, minimal, self-contained, reproducible code.
Received on Tue 19 Jun 2007 - 19:45:01 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Tue 19 Jun 2007 - 20:33:56 GMT.

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