2013-11-24 5 views
4

У меня есть следующий код, который позволяет сгруппировать вертикальные квадраты с помощью функции bwplot в lattice. Воспроизводимый пример ..Сгруппированный горизонтальный ящик с bwplot

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, ...) 
    }) 

Это прекрасно работает, но я хотел бы присущ рефлективные, вербальные быть горизонтальными, поэтому я изменил первую строку, сохраняя все остальное равное:

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

Но граф выходит как это Output. Я пробовал играть с кодом без успеха. У меня есть 2 вопроса: во-первых, как я могу, или возможно, чтобы ящики не накладывались друг на друга? И во-вторых, и в целом, как я могу установить цветную панель в оттенки серого, так что сюжет выходит в оттенках серого или просто черного и белого?

ответ

3

Если это не так важно, что вы используете bwplot, вы можете попробовать 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

6
  • Вы также должны инвертировать х и у роли в panel.groups функции.
  • Используйте trellis.par.set, чтобы изменить цвет заливки наложенного символа

enter image description here

data(mpg, package = "ggplot2") 
library(latticeExtra) 
mycolors <- grey.colors(5, start = 0.1, end = 0.9) 
trellis.par.set(superpose.symbol = list(fill = mycolors,col=mycolors)) 
bwplot(class~hwy, data = mpg, groups = year, 
       pch = "|", box.width = 1/3, 
       panel = panel.superpose, 
       panel.groups = function(x, y,..., group.number) 
        panel.bwplot(x,y + (group.number-1.5)/3,...) 
      ) 

Но это, вероятно, проще здесь, чтобы использовать решение ggplot2.

+1

Спасибо, что 'y + (group.numbers-1.5)/3)' трюк - это прекрасный! –

Смежные вопросы