On Thu, Apr 29, 2010 at 6:15 PM, Santosh <santosh2...@gmail.com> wrote:
> Richard,
> Thanks for your email. I am not looking for that kind of plot as you had
> suggested. I would like to see overlaid boxplots. Deepayan had earlier shown
> the method of overlay of boxplots (using panel.groups=panel.bwplot)...
>
> I have seen in some packages like ggplot2, where the overlapped plots are
> automatically shown as a mix of overlapping colors, and was wondering if
> similar features can be implemented in lattice package...

As you have figured out, the trick is to change the default settings
within the panel.groups function (this is because certain parameters
in panel.bwplot are taken from the settings and cannot be overridden
using function arguments). Here is a cleaner implementation of that
idea:

my.settings <-
    list(box.dot = list(col = c("red", "blue"), pch = 16),
         box.rectangle = list(col = c("red", "blue"),
                              fill = c("pink", "lightblue"),
                              alpha = c(0.5, 0.5)),
         box.umbrella = list(col = c("red", "blue")))

bwplot(y ~ factor(category),
       groups = level,
       data = tmp,
       panel = panel.superpose,
       panel.groups = function(x, y, group.number, ..., horizontal) {
           opar <- trellis.par.get()
           on.exit(trellis.par.set(opar))
           trellis.par.set(list(box.dot = Rows(my.settings$box.dot,
group.number),
                                box.rectangle =
Rows(my.settings$box.rectangle, group.number),
                                box.umbrella =
Rows(my.settings$box.umbrella, group.number)))
           panel.bwplot(x, y, varwidth = TRUE, notch = TRUE,
horizontal = horizontal)
           panel.loess(x, y, lwd = 2, alpha=0.2, lty=1,
                       col.line = c("red","blue")[group.number])
           panel.abline(h=0, col="black", lty=2)
       })

-Deepayan

>
> **Reproducing the earlier posted code for convenience..**
>
> tmp <- data.frame(
> y=rnorm(100),
> category=rep(factor(letters[1:
> 5]),each=20),
> level=rep(factor(0:1), length=100))
>
> barchart(y~factor(category),
> groups=level,
>         data=tmp,jitter.x=F,
>         panel=function(...){
>         panel.superpose( ...)
>         panel.superpose(panel.groups=panel.bwplot,
>             alpha=c(0.5,0.5),
>             varwidth=T,notch=T,
>             col=c("red","blue"),
>             fill=c("pink","lightblue"),pch=16,
>
> par.settings=list(box.umbrella=list(col=c("red","blue"),box.dot=list(col=c("red","blue")))),...)
>
> panel.superpose(panel.groups=panel.loess,lwd=2,col.line=c("red","blue"),alpha=0.2,lty=1,...)
>         panel.abline(h=0,col="black",lty=2)},
>         xlab="time bin (week)",
>         auto.key=list(space="right",text=c("A","H"),points=T))
>
> Thanks,
> Santosh
>
>
> On Thu, Apr 29, 2010 at 1:58 PM, RICHARD M. HEIBERGER <r...@temple.edu>
> wrote:
>>
>> Santosh,
>>
>> continuing with your example, I recommend several functions in the HH
>> package.
>>
>> ## install.packages("HH") ## needed once, if you don't already have it
>>
>> require(HH)
>>
>> tmp <- data.frame(y=rnorm(100),
>>                   category=rep(factor(letters[1:5]), each=20),
>>                   level=rep(factor(0:1), length=100))
>> bwplot(y ~ interaction(level, category), data=tmp, col=c("red","blue"),
>>        panel=panel.bwplot.intermediate.hh)
>> tmp$lv <- with(tmp, interaction(level, category))
>> position(tmp$lv) <- outer(c(-.3,.3), seq(1.5, 9.5, 2), `+`)
>> bwplot(y ~ lv, data=tmp, col=c("red","blue"),
>>        panel=panel.bwplot.intermediate.hh,
>>        scales=list(x=list(at=seq(1.5, 9.5, 2), labels=letters[1:5])))
>>
>> Rich
>>
>

______________________________________________
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.

Reply via email to