2016-08-02 65 views
1

我有一个类似于下面的窗体中的数据。我想从中创建一个4x4的箱型图。但是,下面的代码只会生成一个盒子图。当我做xyplot时,情节很好。我是R新手,所以我确定它是一个愚蠢的错误,但任何人都可以帮助/回答为什么xyplot和bwplot有不同的行为,以及我如何获得4x4的盒图?R格子boxplot网格

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=TRUEbwplot(...)似乎这样的伎俩:

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

从帮助文件:

这个功能的变化是,当“外”的说法是 设置为“真”。在这种情况下,每块板上的图不会叠加在 中,而是分成不同的面板(如果添加了新的条件变量,则为 )。

0

首先尝试重新格式化数据:

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

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

enter image description here

+0

这很好,因为如果我向数据集添加更多列,我不必将它们添加到组中并定义方程!非常好。这个测试数据集都是相同的规模,但我的真实数据跨越了几个尺度,所以我还需要添加“scales = list(relation =”free“)”,并将布局设置为4x4。非常感谢你的帮助。 – Nathan