保存多个箱图

时间:2011-03-14 13:00:36

标签: r save boxplot

我做了一个循环来创建多个箱图。问题是,我想保存所有的箱图,而不是互相覆盖。有什么建议吗?

这是我目前的代码:

boxplot <- list()
for (x in 1:nrow(checkresults)){
    boxplots <- boxplot(PIM[,x], MYC [,x], OBX[,x], WDR[,x], EV[,x], 
                        main=colnames(PIM)[x], 
                        xlab="PIM, MYC, OBX, WDR, EV")
}

3 个答案:

答案 0 :(得分:6)

您想将它们保存在某些文件中,还是保存它们以便能够在不同的窗口中查看它们?

如果是第一种情况,您可以在png循环中使用pdffor或任何函数调用:

R> for (i in 1:5) { 
R>    png(file=paste("plot",i,".png",sep=""))
R>    plot(rnorm(10))
R>    dev.off() 
R> }

如果您想在单独的窗口中显示它们,只需使用dev.new

R> for (i in 1:5) { 
R>    dev.new()
R>    plot(rnorm(10)); 
R> }

答案 1 :(得分:6)

只是要添加@juba的答案,如果要将图表保存到多页pdf文件中,则不必使用@juba建议的paste命令。此

pdf("myboxplots.pdf")
for (x in seq_along(boxplots)){
    boxplot(PIM[,x], MYC [,x], OBX[,x], WDR[,x],EV[,x],
                     main = colnames(PIM)[x], 
                     xlab = "PIM, MYC, OBX, WDR, EV")
}
dev.off() 

创建一个单页多页pdf文档,其中每个页面都是一个boxplot。如果要将箱图存储在单独的pdf文档中,请使用file=paste命令。

答案 2 :(得分:2)

首先,创建一个正确长度的列表 - 它只是简化了事情,在通过循环填充对象之前分配存储是一种很好的做法:

boxplots <- vector(mode = "list", length = nrow(checkresults))

然后我们可以循环遍历您想要的数据,使用boxplots表示法分配给[[x]]列表的每个组件:

for (x in seq_along(boxplots)){
    boxplots[[x]] <- boxplot(PIM[,x], MYC [,x], OBX[,x], WDR[,x],EV[,x],
                             main = colnames(PIM)[x], 
                             xlab = "PIM, MYC, OBX, WDR, EV")
}

之前,您的代码在后续迭代期间覆盖了之前的boxplot信息。