2013-11-24 2 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. 나는 성공없이 코드로 놀아 보려고 노력했다. 두 가지 질문이 있습니다. 첫째, 상자 플롯을 서로 겹치지 않게하려면 어떻게해야합니까? 그리고 두 번째로 그리고 더 일반적으로, 어떻게 컬러 패널을 그레이 스케일로 설정할 수 있습니까? 음영이 회색 또는 흑백으로 나타납니다. 당신이 bwplot를 사용하는 것이 중요하지 있다면

답변

3

, 당신은 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 함수에서 x와 y의 역할을 반전합니다.
  • 사용 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)'트릭은 아름답습니다! –

관련 문제