【问题标题】:Saving multiple boxplots保存多个箱线图
【发布时间】:2011-07-15 00:12:17
【问题描述】:

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

这是我当前的代码:

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")
}

【问题讨论】:

  • 您能否提供一个可重现的示例?你应该(几乎)永远不要在 R 中使用for 循环。你可以使用applylapply,但现在,我对你的数据结构只有模糊的概念。再一次,请不要使用循环。
  • @aL3xa :实际上,您几乎从不在 R 中使用 for 循环。这是何时使用它们而不是 *apply 的示例。这行不通。
  • Naaah... 必须有办法避免循环。 =)

标签: r save boxplot


【解决方案1】:

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

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

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> }

【讨论】:

  • 谢谢!这对我有帮助!
【解决方案2】:

只是添加到@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 文档,其中每一页都是一个箱线图。如果您想将箱线图存储在单独的 pdf 文档中,请使用 file=paste 命令。

【讨论】:

    【解决方案3】:

    首先,创建一个正确长度的列表 - 它只是让事情变得更容易,并且是在通过循环填充对象之前分配存储空间的好习惯:

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

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

    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")
    }
    

    之前,您的代码会在后续迭代中覆盖之前的箱线图信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-14
      • 2017-04-26
      • 2012-09-28
      • 1970-01-01
      • 1970-01-01
      • 2023-01-31
      相关资源
      最近更新 更多