# [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.

HTH,

--sundar

```