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

R语言绘制ROC曲线遇“figure margins too large”错误求助

解决R绘制ROC曲线时Error in plot.new() : figure margins too large报错

常见边距问题修复方案

  • 重置绘图环境
    先关闭所有现存绘图设备,重置默认参数,避免之前的参数残留导致冲突:

    dev.off()
    par(mfrow = c(1,1), mar = c(5,4,4,2) + 0.1)
    

    之后重新执行绘图代码。

  • 手动指定绘图设备尺寸
    若使用RStudio,直接拉大右侧绘图面板;若用脚本运行,可显式定义输出设备的宽高:

    png("knn_roc.png", width = 800, height = 600)
    plot(rocCurve_KNN, col="red", main='ROC KNN',percent = TRUE,add=FALSE, asp = NA)
    dev.off()
    
  • 清理冗余绘图设备
    用dev.list()查看当前活跃的绘图设备,多余的用dev.off()逐个关闭,确保只有一个绘图环境在运行。

你的代码中额外的数据问题

你提供的测试样本仅11行,划分训练集后测试集样本量极小,且KNN预测结果knn_pred_n_roc大概率只有单一类别(比如全0),这种情况下ROC曲线无法正常生成,建议:

  1. 使用完整的bank-full.csv数据集进行分析;
  2. 先检查预测结果与真实标签的分布:
    table(test_bank_results, knn_pred_n_roc)
    
    若存在类别单一或严重不平衡,需调整K值、模型或补充数据。

修正后的测试代码

基于你提供的小数据,重置参数后尝试绘图:

library(pROC)

# 重置绘图参数
dev.off()
par(mar = c(5,4,4,2) + 0.1)

knn_pred_n_roc <- ifelse(knn_pred_n==1,1,0)
rocCurve_KNN <- roc(test_bank_results, knn_pred_n_roc, direction = "<", levels = c(0,1))

plot(rocCurve_KNN, col="red", main='ROC KNN',percent = TRUE,add=FALSE, asp = NA)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 00:23:19