Hi: One hopes that there is a more elegant solution than this bit of ad-hockery. >From your posted example:
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) df$lab <- rep(1:6, each = 3) df$lab2 <- '' df$lab2[seq(1, 16, by = 3)] <- 1:6 # adapt to your situation - seq(1, nrow(df) - 63, by = 64), perhaps bwplot(dv ~ f1 | f2, data = df, ylim = c(0.5, 1), panel = function(x, y, ..., subscripts) { lab <- df$lab2[subscripts] panel.bwplot(x, y, ...) panel.text(x, 0.55, labels = lab) } ) Alternatively, panel.text() takes an alpha = argument; for example, bwplot(dv ~ f1 | f2, data = df, ylim = c(0.5, 1), panel = function(x, y, ..., subscripts) { lab <- df$lab[subscripts] panel.bwplot(x, y, ...) panel.text(x, 0.55, labels = lab, alpha = 0.5) } ) You could toy with the value of alpha until something acceptable emerges. But as I said, there is probably a better solution and I'm happy to be educated if there is. HTH, Dennis On Sat, Apr 9, 2011 at 4:56 AM, Jeff Stevens <stev0...@googlemail.com>wrote: > Hi, > > Thanks for the work around, Dennis. My actual data set has 64 > replicates for each factor level combination (rather than the 3 in the > example), so the overplotting is quite messy. Any ideas on how to > avoid the overplotting? > > Jeff > > > On Fri, Apr 8, 2011 at 7:32 PM, Dennis Murphy <djmu...@gmail.com> wrote: > > Hi: > > > > After a number of false starts, I finally consulted Deepayan's book and > the > > example on p. 73, suitably adapted, yielded a solution. Add a variable > for > > the labels and then... > > > > df$lab <- rep(1:6, each = 3) > > bwplot(dv ~ f1 | f2, data = df, ylim = c(0.5, 1), > > panel = function(x, y, ..., subscripts) { > > lab <- df$lab[subscripts] > > panel.bwplot(x, y, ...) > > panel.text(x, 0.55, labels = lab) > > } > > ) > > > > If you look closely, you'll see that each label is overplotted three > times. > > A similar plot in ggplot2 would be > > > > library(ggplot2) > > ggplot(df, aes(x = f1, y = dv)) + geom_boxplot() + > > geom_text(aes(x = as.numeric(f1), lab = lab), y = 0.55, alpha = 0.5) > + > > facet_wrap( ~ f2) + ylim(0.5, 1) > > > > The alpha argument in geom_text() is designed to mitigate the > overplotting > > effect somewhat. > > > > HTH, > > Dennis > > > > > > On Fri, Apr 8, 2011 at 5:32 AM, Jeff Stevens <stev0...@googlemail.com> > > wrote: > >> > >> 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 > >> > >> ______________________________________________ > >> R-help@r-project.org 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. > > > > > > > > -- > Jeff Stevens > Center for Adaptive Behavior and Cognition > Max Planck Institute for Human Development > Lentzealle 94 > 14195 Berlin, Germany > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org 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.