为什么我看不到带有for循环的多个图?

时间:2016-06-04 22:32:20

标签: r plot bioconductor

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

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)

要出现的东西。我怎么能看到所有的情节?

2 个答案:

答案 0 :(得分:2)

听起来这就是你想要的:

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个文件中。

答案 1 :(得分:0)

在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()

}