Lattice : factor levels in the margins
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 at stat.auckland.ac.nz http://www.stat.auckland.ac.nz/~paul/