From: Dennis Murphy <djmuser_at_gmail.com>

Date: Sat, 09 Apr 2011 06:21:13 -0700

df <- data.frame(f1, f2, dv)

df$lab <- rep(1:6, each = 3)

R-help_at_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. Received on Sat 09 Apr 2011 - 13:27:23 GMT

Date: Sat, 09 Apr 2011 06:21:13 -0700

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 <stev0175_at_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 <djmuser_at_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 <stev0175_at_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_at_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_at_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. Received on Sat 09 Apr 2011 - 13:27:23 GMT

Archive maintained by Robert King, hosted by
the discipline of
statistics at the
University of Newcastle,
Australia.

Archive generated by hypermail 2.2.0, at Sat 09 Apr 2011 - 18:20:27 GMT.

*
Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help.
Please read the posting
guide before posting to the list.
*