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

From: Paul Murrell <>
Date: Fri 25 Mar 2005 - 10:31:49 EST


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
# lattice plot without strips
dotplot(variety ~ yield | year * site, data=barley,

# move to panel (1, 6) and turn clipping off so can draw outside panel trellis.focus("panel", 1, 6,, 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,, 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,, highlight=FALSE)
grid.text("Crookston", x=unit(1, "npc") + unit(1, "lines"), rot=90)
trellis.focus("panel", 2, 4,, highlight=FALSE)
grid.text("Morris", x=unit(1, "npc") + unit(1, "lines"), rot=90)
trellis.focus("panel", 2, 3,, highlight=FALSE)
grid.text("University Farm", x=unit(1, "npc") + unit(1, "lines"), rot=90)
trellis.focus("panel", 2, 2,, highlight=FALSE)
grid.text("Duluth", x=unit(1, "npc") + unit(1, "lines"), rot=90) trellis.focus("panel", 2, 1,, highlight=FALSE) grid.text("Grand Rapids", x=unit(1, "npc") + unit(1, "lines"), rot=90)


Dr Paul Murrell
Department of Statistics
The University of Auckland
Private Bag 92019
New Zealand
64 9 3737599 x85392

______________________________________________ mailing list
PLEASE do read the posting guide!
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