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曲线无法正常生成,建议:
- 使用完整的bank-full.csv数据集进行分析;
- 先检查预测结果与真实标签的分布:
若存在类别单一或严重不平衡,需调整K值、模型或补充数据。table(test_bank_results, knn_pred_n_roc)
修正后的测试代码
基于你提供的小数据,重置参数后尝试绘图:
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
相关产品推荐
相关产品推荐

