The next version of HH (3.0-3) is now out (at this instant source and Windows are at cran.r-project.org, it will be everywhere in a day or so).
The new function panel.bwplot.superpose does everything we have discussed in this email thread, and a bit more. See the example(panel.bwplot.superpose) for details. Rich On Tue, Dec 10, 2013 at 6:25 AM, Gerrit Eichner <gerrit.eich...@math.uni-giessen.de> wrote: > Thank you very much, Rich, for the fast and very helpful reply! It helped me > to reach my goal. > > Regards -- Gerrit > > PS: I extended your solution to a version that allows slightly finer control > over the components of the boxplots, in particular if one wants to combine > it with, e.g., panel.stripplot() or panel.average(). It was also possible to > simplify my call of bwplot() a bit. The code is certainly not perfect and > fully tested, but does work (for me ;-)), and follows as a little 'thank > you': > > > panel.bwplot.constantColor <- function( ..., col, fill, cex, pch, > dot.pch, umbrella.lty, box.alpha) { > ## Date: Mon, 9 Dec 2013 17:52:38 -0500 > ## From: Richard M. Heiberger <r...@temple.edu> > ## Subject: Re: [R] lattice: superposed boxplots with same colors > ## for rectangles and umbrellas and filled boxes > > > ## to be included in next version of the HH package > box.save <- list( box.dot = trellis.par.get( "box.dot"), > box.rectangle = trellis.par.get( "box.rectangle"), > box.umbrella = trellis.par.get( "box.umbrella"), > plot.symbol = trellis.par.get( "plot.symbol")) > trellis.par.set( box.dot = list( col = col), > box.rectangle = list( col = col, alpha = box.alpha), > box.umbrella = list( col = col, lty = umbrella.lty, > alpha = box.alpha), > plot.symbol = list( col = col)) > panel.bwplot( ..., fill = col, cex = cex, pch = dot.pch) > trellis.par.set( box.save) > } > > > bwplot( Y ~ F1, groups = F2, data = Data, jitter.data = TRUE, > col = c( "red", "blue"), box.alpha = 1/4, > dot.pch = 17, umbrella.lty = 1, do.out = FALSE, > panel = panel.superpose, > panel.groups = panel.bwplot.constantColor) > > > > > >> Thank you for the opportunity to illustrate this. I solved this problem >> last week and it will be included in the next version of the HH package >> (about a month away). >> >> panel.bwplot.constantColor <- function(..., col, fill, cex, pch) { >> ## to be included in next version of the HH package >> box.save <- list(box.dot=trellis.par.get("box.dot"), >> box.rectangle=trellis.par.get("box.rectangle"), >> box.umbrella=trellis.par.get("box.umbrella"), >> plot.symbol=trellis.par.get("plot.symbol")) >> trellis.par.set(box.dot=list(col=col), >> box.rectangle=list(col=col), >> box.umbrella=list(col=col), >> plot.symbol=list(col=col)) >> panel.bwplot(..., fill=col, cex=cex, pch=pch) >> trellis.par.set(box.save) >> } >> >> bwplot( Y ~ F1, groups = F2, data = Data, >> col = mycolors, fill = mycolors, jitter.data = TRUE, pch=19, >> panel = panel.superpose, >> panel.groups = function(..., pch, col, alpha){ >> panel.stripplot(...) >> panel.bwplot.constantColor(..., pch=pch, col=col, >> alpha=alpha, do.out = FALSE) >> }, >> par.settings = list( box.dot = list( alpha = myalpha), >> box.rectangle = list( col = mycolors, >> alpha = myalpha), >> box.umbrella = list( col = mycolors, >> alpha = myalpha)) >> ) >> >> >> Rich >> >> On Mon, Dec 9, 2013 at 5:17 PM, Gerrit Eichner >> <gerrit.eich...@math.uni-giessen.de> wrote: >>> >>> Dear R-list, >>> >>> I've been trying to produce a sort of an interaction plot wherein colored >>> stripplots and boxplots are superposed. In particular, I want the colors >>> of >>> the (transparently) filled boxes to be the same as the colors of the box >>> borders (rectangle) and their whiskers (umbrella). Below I'm going to >>> create >>> an artificial data set and provide the code with which I've come up so >>> far, >>> and which is a fusion and adaptation of a few pieces of code I've found >>> in >>> the help pages and the mail archives. It does almost what I want, but >>> still >>> colors the rectangles and the umbrellas in black (of course, because it >>> is >>> the setting in the example presented below). However, the latter is what >>> I >>> want to change. >>> >>> x <- c( rep( 1:4, each = 10), rep( -2, 40)) >>> Data <- data.frame( F1 = gl( 4, 10, length = 80, labels = LETTERS[ 1:4]), >>> F2 = gl( 2, 40), Y = x + rnorm( length( x))) >>> >>> mycolors <- c( "red", "blue") >>> myalpha <- 0.33 >>> bwplot( Y ~ F1, groups = F2, data = Data, >>> col = mycolors, fill = mycolors, jitter.data = TRUE, >>> panel = panel.superpose, >>> panel.groups = function(..., pch, col, alpha){ >>> panel.stripplot(...) >>> panel.bwplot(..., do.out = FALSE) >>> }, >>> par.settings = list( box.dot = list( alpha = myalpha), >>> box.rectangle = list( col = "black", >>> alpha = myalpha), >>> box.umbrella = list( col = "black", >>> alpha = myalpha)) >>> ) >>> >>> >>> If I'd provide mycolors instead of "black" to the col-component of the >>> (sub-)lists given to par.settings, the coloring of the respective >>> components >>> of the boxplots would not be what I want. Having studied the code of >>> panel.superpose() and panel.bwplot() it appears to me that panel.bwplot() >>> cannot access the settings created by panel.supperpose when it comes to >>> drawing the rectangle and umbrella of a boxplot. It only accesses >>> box.[dot, >>> rectangle, umbrella], which does not give what I need. >>> >>> I may have overlooked the obvious and would be quite grateful if somebody >>> could give me a hint where to look further. Or is a workaround necessary >>> (and available)? >>> >>> Thanks a lot in advance! >>> >>> Best Regards -- Gerrit ______________________________________________ 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.