2012-10-29 7 views
4

단일 플롯에서 여러 개의 상자 플롯을 만드는 데 실제 문제가 있습니다. 다섯 개의 변수가 있는데 세 개는 숫자이고 두 개는 팩터입니다. 세 가지 수치 변수 모두에 대해 boxplot을 원하지만 두 Factor 변수로 그룹화합니다 ... 음모에는 MM, ND 및 BB에 대한 3 개의 상자가있는 낮음 및 높음 각각에 대해 두 그룹이 있습니다. 전설에는 MM, ND 및 BB의 약자가 포함되어야합니다. 각 숫자 변수에 대한 상자 그림의 별도의 그룹을 가지고 싶다면두 개의 조건에 따라 그룹화 된 여러 상자 플롯

Group Class Sal Wal Daa 
MM Low 21 34 4 
ND Low 23 65 3 
BB High 21 34 2 
MM High 25 23 4 
MM High 23 23 5 
MM High 13 54 6 
MM High 56 32 4 
MM Low 34 13 3 
ND Low 12 35 7 
ND Low 34 34 2 
ND Low 54 54 1 
ND High 32 34 6 
ND High 43 32 7 
BB Low 54 13 3 
BB Low 12 56 2 
BB Low 45 34 6 
BB High 32 32 3 
BB High 13 12 2 
BB High 54 12 5 

답변

6

, 당신은 그룹 및 클래스에 의해 그룹 변수에 interaction() 기능을 사용할 수 있습니다 :

test.data <- data.frame(Sal=rnorm(100), 
         group=factor(sample(LETTERS[1:3], 100, replace=TRUE)), 
         class=factor(sample(c("low","high"), 100, replace=TRUE))) 
boxplot(Sal ~ interaction(group,class), data=test.data) 
+6

''상자 그림 (살 ~ 그룹 + 클래스), 필요하지 않습니다 interaction''에서, 단지'boxwex = 0.2를 추가, 정확히 같은 – TMS

+0

내가 그룹의 "시각적 분리"를 추가 거라고 할 것 = c (0.4, 1, 1.6, 3.4, 4, 4.6)' –

2

을 먼저 데이터를 다시 정렬 할 필요가 :

dta <- read.table(text="Group Class Sal Wal Daa 
    MM Low 21 34 4 
    ND Low 23 65 3 
    BB High 21 34 2 
    MM High 25 23 4 
    MM High 23 23 5 
    MM High 13 54 6 
    MM High 56 32 4 
    MM Low 34 13 3 
    ND Low 12 35 7 
    ND Low 34 34 2 
    ND Low 54 54 1 
    ND High 32 34 6 
    ND High 43 32 7 
    BB Low 54 13 3 
    BB Low 12 56 2 
    BB Low 45 34 6 
    BB High 32 32 3 
    BB High 13 12 2 
    BB High 54 12 5", header=TRUE) 
dtaLong <- stack(dta, select=cbind(Sal, Wal, Daa)) 
dtaLong <- data.frame(dtaLong, dta[,1:2]) 

이제 ind는 원래 데이터 세트의 세 변수의 값을 식별하는 새로운 요소입니다.

library(lattice) 
bwplot(values~ind | Group + Class, data=dtaLong) 
관련 문제