Re: [R] Lattice : factor levels in the margins

From: Paul Murrell <p.murrell_at_auckland.ac.nz>
Date: Fri 25 Mar 2005 - 10:31:49 EST

Hi

Yves Brostaux wrote:
> Hello !
>
> I'm struggling again against lattice graprhics. ;) I'm trying to produce
> a conditionnal xyplot with two conditionning factors (let's say A and
> B). I want the levels of those factors (A1, A2, etc) to show in the
> margins of the lattice plot, not in the strips between the panels.
>
> A1 A2 A3
>
> plot11 plot12 plot13 B1
>
> plot21 plot22 plot23 B2
>
>
> I managed to remove the strips with strip=FALSE, but now I can't find
> how to write the levels of the factors in the margin in front of their
> respective lines/columns. It doesn't seems that xlab and ylab arguments
> could help doing this, as I can't insert multiple xlab's (x variable and
> A levels, or y variable and B levels) and can't decide which side to use
> for writing them.
>
> Does anybody have a hint ? Thank you very much !

Here's one approach, using trellis.focus() and grid.text(). This particular example is obviously hand-tuned to the example data set, but it shouldn't be too hard to generalise. I don't think you can do this via a panel function because output is clipped to the current panel for panel functions (Deepayan Sarkar may be able to confirm or deny that).

# "standard" dotplot
dotplot(variety ~ yield | year * site, data=barley)

# Customised version
library(grid)
# lattice plot without strips
dotplot(variety ~ yield | year * site, data=barley,

         strip=FALSE)
# move to panel (1, 6) and turn clipping off so can draw outside panel trellis.focus("panel", 1, 6, clip.off=TRUE, highlight=FALSE) # draw factor label 2 lines above the top of the panel grid.text("1932", y=unit(1, "npc") + unit(2, "lines")) # move to next panel, repeat ad nauseam
trellis.focus("panel", 2, 6, clip.off=TRUE, highlight=FALSE) grid.text("1931", y=unit(1, "npc") + unit(2, "lines")) grid.text("Waseca", x=unit(1, "npc") + unit(1, "lines"), rot=90)

trellis.focus("panel", 2, 5, clip.off=TRUE, highlight=FALSE)
grid.text("Crookston", x=unit(1, "npc") + unit(1, "lines"), rot=90)
trellis.focus("panel", 2, 4, clip.off=TRUE, highlight=FALSE)
grid.text("Morris", x=unit(1, "npc") + unit(1, "lines"), rot=90)
trellis.focus("panel", 2, 3, clip.off=TRUE, highlight=FALSE)
grid.text("University Farm", x=unit(1, "npc") + unit(1, "lines"), rot=90)
trellis.focus("panel", 2, 2, clip.off=TRUE, highlight=FALSE)
grid.text("Duluth", x=unit(1, "npc") + unit(1, "lines"), rot=90) trellis.focus("panel", 2, 1, clip.off=TRUE, highlight=FALSE) grid.text("Grand Rapids", x=unit(1, "npc") + unit(1, "lines"), rot=90)

Paul

-- 
Dr Paul Murrell
Department of Statistics
The University of Auckland
Private Bag 92019
Auckland
New Zealand
64 9 3737599 x85392
paul@stat.auckland.ac.nz
http://www.stat.auckland.ac.nz/~paul/

______________________________________________
R-help@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
Received on Fri Mar 25 10:35:21 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:30:56 EST