[R] how to make a median line thicker in bwplot (lattice)

Duncan Mackay mackay at northnet.com.au
Mon Feb 11 23:16:47 CET 2013


Hi

I had a similar problem - see

http://tolstoy.newcastle.edu.au/R/e9/help/10/03/7129.html

DF <-
data.frame(site = factor(rep(1:5, each = 20)),
            height = rnorm(100))

   bwplot(height~ site,DF,
          pch   = "|",
          panel = function(x, y, ..., horizontal) {

                     panel.bwplot(x, y, ...,  horizontal = horizontal)

                     if (horizontal) {

                       meds <- tapply(x, y,  median)
                       ylocs <- seq_along(meds)
                       panel.segments(meds, ylocs - 1/4,
                                      meds, ylocs + 1/4,
                                      lwd = 2, col = "red")

                     } else {

                       meds <- tapply(y, x, median)
                       xlocs <- seq_along(meds)
                       panel.segments(xlocs - 1/4, meds,
                                      xlocs + 1/4, meds,
                                      lwd = 2, col = "red")

                    } ## if (horizontal)
                  }  ## panel function
   ) ## bwplot

Regards

Duncan

Duncan Mackay
Department of Agronomy and Soil Science
University of New England
Armidale NSW 2351
Email: home: mackay at northnet.com.au


At 01:35 12/02/2013, you wrote:

>On Feb 11, 2013, at 1:23 AM, Elaine Kuo wrote:
>
>>Hello,
>>
>>I am drawing a boxplot using bwplot in lattice.
>>I would like to learn how to draw a thicker median line instead of the
>>default setting.
>>Thank you.
>>
>>Code
>>
>>bwplot(........,
>>    pch=rep("|",2))
>
>At the moment panel.bwplot has code at the end that I think deals with
>that aspect:
>
>  if (all(pch == "|")) {
>             mult <- if (notch)
>                 1 - notch.frac
>             else 1
>             panel.segments(levels.fos - mult * blist.height/2,
>                 blist.stats[, 3], levels.fos + mult * blist.height/2,
>                 blist.stats[, 3], lwd = box.rectangle$lwd, lty =
>box.rectangle$lty,
>                 col = box.rectangle$col, alpha = alpha, identifier =
>paste(identifier,
>                   "dot", sep = "."))
>         }
>         else {
>             panel.points(x = levels.fos, y = blist.stats[, 3],
>                 pch = pch, col = col, alpha = alpha, cex = cex,
>                 fontfamily = fontfamily, fontface =
>chooseFace(fontface,
>                   font), fontsize = fontsize.points, identifier =
>paste(identifier,
>                   "dot", sep = "."))
>         }
>
>So you need to find a way to change the box.rectangle$lwd setting
>before this code is executed. Looking at
>
>names(trellis.par.get())
>
>It appears that graphic parameter can be set with trellis.par.set().
>
>--
>David.
>
>
>>Elaine
>>
>>         [[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.
>
>David Winsemius, MD
>Alameda, CA, USA
>
>______________________________________________
>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.
>



More information about the R-help mailing list