[R] Adding text labels to lattice plots with multiple panels

Jeff Stevens stev0175 at googlemail.com
Fri Apr 8 14:32:02 CEST 2011


Hi,

I am trying to add text to the bottom of a lattice bwplot with
multiple panels.  I would like to add a label below each boxplot, but
the labels do not come from the data.  I've tried the following, code:

f1 <- c(rep(c(rep("a", 3), rep("b", 3), rep("c", 3)), 2))
f2 <- c(rep("A", 9), rep("B", 9))
dv <- c(0.9, 0.8, 0.85, 0.6, 0.65, 0.7, 0.8, 0.85, 0.8, 0.95, 0.85,
0.9, 0.65, 0.7, 0.75, 0.85, 0.9, 0.85)
df <- data.frame(f1, f2, dv)
lab <- c(1, 2, 3, 4, 5, 6)

bwplot(dv ~ f1 | f2, data = df, ylim = c(0.5, 1),
  panel = function(x, y, ...) {
    panel.bwplot(x, y, ...)
    panel.text(x, 0.55, labels = lab)
  }
)

I have two problems.  First, the label values are writing over one
another.  I wrote a horrible hack (below) that fixes that problem, but
I would like to know if there are better/more flexible ways to do
this.

bwplot(dv ~ f1 | f2, data = df, ylim = c(0.5, 1),
  panel = function(x, y, ...) {
    x2 <- as.factor(c("a", "b", "c"))
    panel.bwplot(x, y, ...)
    panel.text(x2, 0.55, labels = lab)
  }
)

Second, when using the horrible hack the first values are repeated in
the second panel.  How do I display the correct values in the second
panel?  The subscripts argument seems to do the trick when the labels
come from the data, but how do I get the proper values when the labels
come from outside of the data?


Many thanks,
Jeff



More information about the R-help mailing list