2016-08-02 6 views
1

У меня есть данные в форме, аналогичной приведенной ниже. Я бы хотел создать 4x4 сетку из ящиков. Однако нижеприведенный код создает только однострочный график. Когда я делаю xyplot, он прекрасно выглядит. Я новичок в R, поэтому я уверен, что это глупая ошибка, но может ли кто-нибудь помочь/ответить, почему существует другое поведение для xyplot и bwplot и как я могу получить 4x4 ящиков?R решетки сетки прямоугольника

library(lattice) 
require(lattice) 
t1 <- c(LETTERS[1:17]) 
m1 <- matrix(rnorm(12*16,mean=0,sd=1), 12, 16) 
fac <- rep(1:4,3) 
    m1 <- cbind(m1,fac) 
    m1 <- data.frame(m1) 
    colnames(m1) <- t1 
    m1$Q <- as.factor(m1$Q) 

xyplot(A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P ~ Q, 
     data=m1, 
     groups=A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P, 
     scales=list(relation="free"), 
     col="blue", 
     layout=(c(4,4)) 
     ) 
bwplot(A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P ~ Q, 
     data=m1, 
     groups=A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P, 
     col="blue", 
     coef=4, do.out = FALSE, 
     layout=(c(4,4)) 
     ) 

ответ

3

Добавление outer=TRUE к bwplot(...), кажется, сделать трюк:

bwplot(A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P ~ Q, 
     data=m1, 
     groups=A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P, 
     col="blue", 
     coef=4, 
     do.out = FALSE, 
     outer = TRUE, 
     layout=(c(4,4)) 
     ) 

enter image description here

из файла справки:

Разновидность этой функции, когда «внешний» аргумент установлен в «TRUE». В этом случае графики не накладываются на на каждую панель, но вместо этого разделяются на разные панели (как , если новая условная переменная была добавлена).

0

Попробуйте переформатировать данные первого:

library(reshape) 
m1d<-melt(m1,id=17) 

bwplot(value ~ Q | variable, data=m1d) 

enter image description here

+0

Это замечательно, потому что, если я добавлю больше столбцов в набор данных, мне не нужно добавлять их в группы и определять уравнение! Действительно здорово. Этот тестовый набор данных был в одном масштабе, но мои реальные данные охватывают несколько масштабов, поэтому мне также нужно добавить «scale = list (relation =« free »)» и установить макет как 4x4. Большое спасибо за Вашу помощь. – Nathan