我有一个大约有一百个变量的数据矩阵,我想做这些变量的箱形图。一个接一个地做它们是可能的,但是很乏味。我用于箱形图的代码是:
boxplot(myVar ~ Group*Trt*Time,data=exp,col=c('red','blue'),frame.plot=T,las=2, ylab='Counts', at=c(1,2,3,4,6,7,8,9,11,12,13,14,16,17,18,19))
我开始逐一进行,但意识到必须有更好的选择。因此,boxplot调用在时间上只占用一个变量(我可能错了),所以我正在寻找一种方法来一次完成它。一个for循环?接下来,我想在绘图上打印当前变量(= colName)的名称,以使它们分开。
欣赏建议。 谢谢。 jd
答案 0 :(得分:1)
为什么不尝试以下方法:
data(something)
panel.bxp <- function(x, ...)
{
a <- par("a"); on.exit(par(a))
par(a = c(0, 2, a[3:4]))
boxplot(x, add=TRUE)
}
然后,要运行该功能,您可以尝试以下内容:
pairs(something, diag.panel = panel.bxp, text.panel = function(...){})
编辑:还有一个不错的link to an article here on R-bloggers which you might want to have a look at。
答案 1 :(得分:0)
作为R的新手,我试图遵循我的'旧'思想 - 制作一个for循环。这就是我想出的。可能非常原始,因此,我很感激评论/建议。无论如何:循环:
for (i in 1:ncol(final)) {
#print(i)
c <- colnames(final)[i]
#print(c)
b <- final[,i]
#b <- t(b)
#dim(b)
#print(b)
exp <- data.frame(Group,Trt,Time,b)
#dim(exp)
#print(exp)
boxplot(b ~ Group*Trt*Time,data=exp,col=c('red','blue'),frame.plot=T, las=2, ylab='Counts',main=c, at=c(1,2,3,4,6,7,8,9,11,12,13,14,16,17,18,19))
}
循环遍历数据矩阵'final',(48rows x 67cols)。拾取列标题c,它在boxplot调用中用作主标题。拿起数据列,b。使用在循环外部建立的Group,Trt和Time因子设置实验,并调用boxplot。 这似乎做我想要的。奇怪的是,Rstudio不允许将多于25个(大约)的图存储在图控制台中,因此我必须在几轮中运行此循环。 无论如何,抱歉回答我自己的问题。我怀疑,更好的解决方案非常受欢迎,因为我的方式很漂亮。