【问题标题】:Why am I unable to see multiple plots appear with a for loop?为什么我看不到带有 for 循环的多个图?
【发布时间】:2016-10-04 18:39:00
【问题描述】:

这是我的代码,它是更大脚本的一部分。

for(d1 in names(survD)){
survfit1 <- survfit(Surv(time=survD[[d1]][,"time"],
                                    event=survD[[d1]][,"death"],type='right')~1)

png(paste(survPath,"/surv_",d1,".png",sep=""))
plot(survfit1,xlab="Years",ylab="Survival probability",xmax=xmax1)

}

我还不太清楚这段代码的作用,所以我试图查看每个单独的情节以了解它是什么。问题是,每当我在 linux 终端的 R 命令行中运行它时,什么都不会出现。我必须多次使用 dev.off() 然后重新运行这段代码:

plot(survfit1)

让某些东西出现。我怎样才能看到所有的情节?

【问题讨论】:

  • 去掉这条线png(paste(survPath,"/surv_",d1,".png",sep="")) 然后他们会打印到你的图形设备上。但是,它们都会快速连续出现,因此您必须返回它们。或者,您可以通过在循环中的某处添加 readline() 来暂停循环。
  • png()jpeg(),等等...((检查?png)也应该以dev.off()结尾?我猜sn-p的目的是保存多个图到多个文件,因此您可以使用浏览其目录的图像查看器查看它们l
  • 仅删除该行是行不通的。

标签: r plot bioconductor


【解决方案1】:

听起来这正是你想要的:

for(d1 in names(survD)){
  survfit1 <- survfit(Surv(time=survD[[d1]][,"time"],
                           event=survD[[d1]][,"death"],type='right')~1)
  x11()  ## open up new graphical window for each plot (to avoid overwriting)
  plot(survfit1,xlab="Years",ylab="Survival probability",
       xmax=xmax1, main = d1)  ## use different titles to distinguish those plots
  }

这将在普通图形窗口上生成绘图。


如果你想使用原始代码,你最好这样做:

for(d1 in names(survD)){
  survfit1 <- survfit(Surv(time=survD[[d1]][,"time"],
                           event=survD[[d1]][,"death"],type='right')~1) 
  png(paste(survPath,"/surv_",d1,".png",sep=""))
  plot(survfit1,xlab="Years",ylab="Survival probability",xmax=xmax1)
  dev.off()
  }

然后,看看getwd()给出的目录。所有绘图都保存在png 文件中。

【讨论】:

    【解决方案2】:

    在 for 循环期间调用 Sys.sleep(.1) 可能会有所帮助。也许试试:

    for(d1 in names(survD)){
    survfit1 <- survfit(Surv(time=survD[[d1]][,"time"],
                                        event=survD[[d1]][,"death"],type='right')~1)
    Sys.sleep(.1)
    png(paste(survPath,"/surv_",d1,".png",sep="", collapse="))
    plot(survfit1,xlab="Years",ylab="Survival probability",xmax=xmax1)
    dev.off()
    

    }

    【讨论】:

      猜你喜欢
      • 2019-08-20
      • 1970-01-01
      • 2018-07-30
      • 2018-10-11
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多