Search code examples
rlatticebwplot

Grouped horizontal boxplot with bwplot


I have the following code that allows grouped vertical box-plots via the bwplot function in lattice. Reproducible example..

data(mpg, package = "ggplot2") 

bwplot( hwy~class, data = mpg, groups = year,
    pch = "|", box.width = 1/3,
    auto.key = list(points = FALSE, rectangles = TRUE, space = "right"),
    panel = panel.superpose,
    panel.groups = function(x, y, ..., group.number) {
        panel.bwplot(x + (group.number-1.5)/3, y, ...)
     })

This works fine, but I would like the boxplots to be horizontal, so I changed the first line, keeping everything else equal:

bwplot( class~hwy, data = mpg, groups = year, ...

But the graph comes out like this Output. I have tried playing around with the code without success. I have 2 questions: Firstly, how can I, or is it possible to have the boxplots not superimposed on each other? And secondly and more generally, how can I set the color panel to grayscale, so the plot come out in shades of gray or just black and white?


Solution

  • If it's not critical that you use bwplot, you may try ggplot:

    ggplot(data = mpg, aes(x = class, y = hwy, fill = factor(year))) +
      geom_boxplot() +
      coord_flip() +
      scale_fill_grey(start = 0.5, end = 0.8) +
      theme_classic()
    

    enter image description here