You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言循环生成多图存为PNG仅显示单图的代码修复求助

问题分析与修复代码

你遇到的问题核心是图形布局设置没有应用到PNG设备上:原代码中par(mfrow = c(3,4))写在png()打开设备之前,这行设置只会作用于当前激活的图形设备(默认是RStudio的绘图窗口),而非后续打开的PNG文件设备,导致所有ROC图都叠加绘制在同一个画布区域,最终只保留最后一张图。

修复后的代码如下:

png(filename = "roc.png", width = 1200, height = 1200)
# 在PNG设备激活后设置布局:3行4列,足够容纳10个图
par(mfrow = c(3,4), pty = "s")  # 将pty="s"也统一设置,避免循环内重复调用
roc = list()
for(id in 1:10)
{
  roc[[id]] = ModelCross[[id]]$roc
  roc_ = ModelCross[[id]]$roc
  coords_ <- coords(roc_, best.method="closest.topleft") ## "youden", "closest.topleft"
  plot(roc_, col = "blue", print.thres="best", print.thres.best.method="closest.topleft")
  print(paste0('roc',id))
}
dev.off()

关键修改说明

  • 把par(mfrow = c(3,4))移到png()之后,确保布局规则应用到PNG输出设备
  • 将par(pty = "s")(设置正方形绘图区域)移到循环外统一设置,减少重复操作(如果需要每个图单独调整,也可以保留在循环内,但统一设置更高效)
  • 保持其他逻辑不变,循环内正常绘制每个ROC图

内容的提问来源于stack exchange,提问作者Lisa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 17:01:15