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

Why am I unable to see multiple plots appear with a for loop?

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

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 命令行中 运行 this 时,什么都没有出现。我必须多次使用 dev.off() 然后重新 运行 此代码:

plot(survfit1)

为了某些东西出现。我怎样才能看到所有的地块?

听起来这就是你想要的:

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
  }

这将在正常图形上生成图 windows。


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

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

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

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

}