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
相关产品推荐
相关产品推荐

