[R] sort boxplot to median

Sundar Dorai-Raj sundar.dorai-raj at PDF.COM
Fri Apr 16 02:27:42 CEST 2004

H. Bromberger wrote:
> Dear guRus,
> I'm stuck and really would appreciate some help. I've already crawled 
> the net...
> I want to do some Boxplot which are sorted by the median and not 
> alphabetically.
> What I did so far:
> x <- subset(mydata, Verwalt.Doku==1, select=c(1, 2))
> P <- plot(x[,1], x[,2], plot=F)
> ???sort(P$stats[3,])???
> bxp(P, col="yellow", las=1, horizontal=T, xlab="Potential")
> Of course it sorts the vector P$stats[3,] but not the rest of the list.
> Thanks in advance, and sorry but I am new to R
> Hubertus

Hi Hubertus,

To make sure bxp (or boxplot) uses the order you want, then the split 
variable must be ordered (see ?ordered). So order the split variable by 
median. E.g.,

R> set.seed(1)
R> z <- data.frame(x = rep(LETTERS[1:3], each = 6), y = rnorm(18))
R> tapply(z$y, z$x, median)
           A           B           C
-0.22140524  0.53160520 -0.03056194
R> z$x <- with(z, ordered(x, levels(x)[order(tapply(y, x, median))]))
R> tapply(z$y, z$x, median)
           A           C           B
-0.22140524 -0.03056194  0.53160520
R> boxplot(y ~ x, data = z)

If you want the descending order, then see ?rev or put a minus sign in 
front of the tapply call.



More information about the R-help mailing list