It is very common that you want to reorder the boxplot according to the medians to see a better trend. I will show you how to do it using ggplot2 and the forcats packages which are developed by Hadely Wickham.

Read his new R for data science book: http://r4ds.had.co.nz/factors.html

head(iris)

a basic boxplot:

library(ggplot2)
ggplot(iris, aes(x = Species, y = Sepal.Width)) + geom_boxplot()

Now, reorder it according to the median levels.

ggplot(iris, aes(x = reorder(Species, Sepal.Width, FUN = median), y = Sepal.Width)) + geom_boxplot()

use the fct_reorder function from forcats. it has a similar syntax with reorder, but note that the argument fun is lower case.

library(forcats)
ggplot(iris, aes(x = fct_reorder(Species, Sepal.Width, fun = median), y = Sepal.Width)) + geom_boxplot()

You can change the order from high to low

ggplot(iris, aes(x = fct_reorder(Species, Sepal.Width, fun = median, .desc =TRUE), y = Sepal.Width)) + geom_boxplot()

some touch-ups

ggplot(iris, aes(x = fct_reorder(Species, Sepal.Width, fun = median, .desc =TRUE), y = Sepal.Width)) + 
        geom_boxplot(aes(fill = fct_reorder(Species, Sepal.Width, fun = median, .desc =TRUE))) + 
        geom_jitter(position=position_jitter(0.2)) +
        theme_bw(base_size = 14) +
        xlab("Species") +
        ylab("Sepal width") +
        scale_fill_discrete(guide = guide_legend(title = "Species"))

NA

If you want to fill the colors mannually with colors from RcolorBrewer:

library(RColorBrewer)
ggplot(iris, aes(x = fct_reorder(Species, Sepal.Width, fun = median, .desc =TRUE), y = Sepal.Width)) + 
        geom_boxplot(aes(fill = fct_reorder(Species, Sepal.Width, fun = median, .desc =TRUE))) + 
        scale_fill_manual(values = brewer.pal(3, "Dark2"), guide = guide_legend(title = "Species")) +
        geom_jitter(position=position_jitter(0.2)) +
        theme_bw(base_size = 14) +
        xlab("Species") +
        ylab("Sepal width") 

A different theme:

ggplot(iris, aes(x = fct_reorder(Species, Sepal.Width, fun = median, .desc =TRUE), y = Sepal.Width)) + 
        geom_boxplot(aes(fill = fct_reorder(Species, Sepal.Width, fun = median, .desc =TRUE))) + 
        scale_fill_manual(values = brewer.pal(3, "Dark2"), guide = guide_legend(title = "Species")) +
        geom_jitter(position=position_jitter(0.2)) +
        theme_classic(base_size = 14) +
        xlab("Species") +
        ylab("Sepal width")

LS0tCnRpdGxlOiAicmVvcmRlciBmYWN0b3JzIGZvciBib3hwbG90IgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgpJdCBpcyB2ZXJ5IGNvbW1vbiB0aGF0IHlvdSB3YW50IHRvIHJlb3JkZXIgdGhlIGJveHBsb3QgYWNjb3JkaW5nIHRvIHRoZSBtZWRpYW5zIHRvIHNlZSBhIGJldHRlciB0cmVuZC4KSSB3aWxsIHNob3cgeW91IGhvdyB0byBkbyBpdCB1c2luZyBgZ2dwbG90MmAgYW5kIHRoZSBbYGZvcmNhdHNgXShodHRwczovL2NyYW4uci1wcm9qZWN0Lm9yZy93ZWIvcGFja2FnZXMvZm9yY2F0cy9pbmRleC5odG1sKSBwYWNrYWdlcyB3aGljaCBhcmUgZGV2ZWxvcGVkIGJ5IEhhZGVseSBXaWNraGFtLgoKUmVhZCBoaXMgbmV3IFIgZm9yIGRhdGEgc2NpZW5jZSBib29rOiBodHRwOi8vcjRkcy5oYWQuY28ubnovZmFjdG9ycy5odG1sCgpgYGB7cn0KaGVhZChpcmlzKQpgYGAKCmEgYmFzaWMgYm94cGxvdDoKCmBgYHtyfQpsaWJyYXJ5KGdncGxvdDIpCmdncGxvdChpcmlzLCBhZXMoeCA9IFNwZWNpZXMsIHkgPSBTZXBhbC5XaWR0aCkpICsgZ2VvbV9ib3hwbG90KCkKYGBgCgpOb3csIHJlb3JkZXIgaXQgYWNjb3JkaW5nIHRvIHRoZSBtZWRpYW4gbGV2ZWxzLgoKYGBge3J9CmdncGxvdChpcmlzLCBhZXMoeCA9IHJlb3JkZXIoU3BlY2llcywgU2VwYWwuV2lkdGgsIEZVTiA9IG1lZGlhbiksIHkgPSBTZXBhbC5XaWR0aCkpICsgZ2VvbV9ib3hwbG90KCkKYGBgCgp1c2UgdGhlIGBmY3RfcmVvcmRlcmAgZnVuY3Rpb24gZnJvbSBgZm9yY2F0c2AuIGl0IGhhcyBhIHNpbWlsYXIgc3ludGF4IHdpdGggYHJlb3JkZXJgLCBidXQgbm90ZSB0aGF0IHRoZSBhcmd1bWVudCBgZnVuYCBpcyBsb3dlciBjYXNlLgoKYGBge3J9CmxpYnJhcnkoZm9yY2F0cykKZ2dwbG90KGlyaXMsIGFlcyh4ID0gZmN0X3Jlb3JkZXIoU3BlY2llcywgU2VwYWwuV2lkdGgsIGZ1biA9IG1lZGlhbiksIHkgPSBTZXBhbC5XaWR0aCkpICsgZ2VvbV9ib3hwbG90KCkKYGBgCgpZb3UgY2FuIGNoYW5nZSB0aGUgb3JkZXIgZnJvbSBoaWdoIHRvIGxvdwoKYGBge3J9CmdncGxvdChpcmlzLCBhZXMoeCA9IGZjdF9yZW9yZGVyKFNwZWNpZXMsIFNlcGFsLldpZHRoLCBmdW4gPSBtZWRpYW4sIC5kZXNjID1UUlVFKSwgeSA9IFNlcGFsLldpZHRoKSkgKyBnZW9tX2JveHBsb3QoKQpgYGAKCnNvbWUgdG91Y2gtdXBzCgpgYGB7cn0KZ2dwbG90KGlyaXMsIGFlcyh4ID0gZmN0X3Jlb3JkZXIoU3BlY2llcywgU2VwYWwuV2lkdGgsIGZ1biA9IG1lZGlhbiwgLmRlc2MgPVRSVUUpLCB5ID0gU2VwYWwuV2lkdGgpKSArIAogICAgICAgIGdlb21fYm94cGxvdChhZXMoZmlsbCA9IGZjdF9yZW9yZGVyKFNwZWNpZXMsIFNlcGFsLldpZHRoLCBmdW4gPSBtZWRpYW4sIC5kZXNjID1UUlVFKSkpICsgCiAgICAgICAgZ2VvbV9qaXR0ZXIocG9zaXRpb249cG9zaXRpb25faml0dGVyKDAuMikpICsKICAgICAgICB0aGVtZV9idyhiYXNlX3NpemUgPSAxNCkgKwogICAgICAgIHhsYWIoIlNwZWNpZXMiKSArCiAgICAgICAgeWxhYigiU2VwYWwgd2lkdGgiKSArCiAgICAgICAgc2NhbGVfZmlsbF9kaXNjcmV0ZShndWlkZSA9IGd1aWRlX2xlZ2VuZCh0aXRsZSA9ICJTcGVjaWVzIikpCiAgICAgICAgCmBgYAoKSWYgeW91IHdhbnQgdG8gZmlsbCB0aGUgY29sb3JzIG1hbm51YWxseSB3aXRoIGNvbG9ycyBmcm9tIGBSY29sb3JCcmV3ZXJgOgoKYGBge3J9CmxpYnJhcnkoUkNvbG9yQnJld2VyKQpnZ3Bsb3QoaXJpcywgYWVzKHggPSBmY3RfcmVvcmRlcihTcGVjaWVzLCBTZXBhbC5XaWR0aCwgZnVuID0gbWVkaWFuLCAuZGVzYyA9VFJVRSksIHkgPSBTZXBhbC5XaWR0aCkpICsgCiAgICAgICAgZ2VvbV9ib3hwbG90KGFlcyhmaWxsID0gZmN0X3Jlb3JkZXIoU3BlY2llcywgU2VwYWwuV2lkdGgsIGZ1biA9IG1lZGlhbiwgLmRlc2MgPVRSVUUpKSkgKyAKICAgICAgICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBicmV3ZXIucGFsKDMsICJEYXJrMiIpLCBndWlkZSA9IGd1aWRlX2xlZ2VuZCh0aXRsZSA9ICJTcGVjaWVzIikpICsKICAgICAgICBnZW9tX2ppdHRlcihwb3NpdGlvbj1wb3NpdGlvbl9qaXR0ZXIoMC4yKSkgKwogICAgICAgIHRoZW1lX2J3KGJhc2Vfc2l6ZSA9IDE0KSArCiAgICAgICAgeGxhYigiU3BlY2llcyIpICsKICAgICAgICB5bGFiKCJTZXBhbCB3aWR0aCIpIApgYGAKCkEgZGlmZmVyZW50IHRoZW1lOgoKYGBge3J9CmdncGxvdChpcmlzLCBhZXMoeCA9IGZjdF9yZW9yZGVyKFNwZWNpZXMsIFNlcGFsLldpZHRoLCBmdW4gPSBtZWRpYW4sIC5kZXNjID1UUlVFKSwgeSA9IFNlcGFsLldpZHRoKSkgKyAKICAgICAgICBnZW9tX2JveHBsb3QoYWVzKGZpbGwgPSBmY3RfcmVvcmRlcihTcGVjaWVzLCBTZXBhbC5XaWR0aCwgZnVuID0gbWVkaWFuLCAuZGVzYyA9VFJVRSkpKSArIAogICAgICAgIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGJyZXdlci5wYWwoMywgIkRhcmsyIiksIGd1aWRlID0gZ3VpZGVfbGVnZW5kKHRpdGxlID0gIlNwZWNpZXMiKSkgKwogICAgICAgIGdlb21faml0dGVyKHBvc2l0aW9uPXBvc2l0aW9uX2ppdHRlcigwLjIpKSArCiAgICAgICAgdGhlbWVfY2xhc3NpYyhiYXNlX3NpemUgPSAxNCkgKwogICAgICAgIHhsYWIoIlNwZWNpZXMiKSArCiAgICAgICAgeWxhYigiU2VwYWwgd2lkdGgiKQpgYGAKCg==