如何在ggroc绘制的多ROC曲线名称中整合AUC值?
给ROC曲线名称添加AUC值的实现方法
你可以通过提取每个ROC对象的AUC值,将其与模型名称拼接后作为列表元素的新名称,这样ggroc绘制时就会自动在图例中显示包含AUC的曲线名称。
方法一:创建列表后统一处理(推荐,避免重复计算)
rocs <- list() rocs[["modele1"]] <- roc(data3$USI3, predict(modele1)) rocs[["modele2"]] <- roc(data3$USI3, predict(modele2)) rocs[["modele3"]] <- roc(data3$USI3, predict(modele3)) # 提取每个模型的AUC并格式化(这里保留2位小数,可按需调整) auc_values <- sapply(rocs, function(x) sprintf("AUC = %.2f", x$auc)) # 重命名列表元素,拼接模型名与AUC names(rocs) <- paste(names(rocs), auc_values, sep = " - ") # 绘制带AUC名称的ROC曲线 ggroc(rocs, legacy.axes = TRUE)
方法二:创建ROC对象时直接设置名称
如果想一步到位,也可以在创建每个ROC对象时直接定义包含AUC的名称:
rocs <- list() # 计算ROC并拼接名称 roc1 <- roc(data3$USI3, predict(modele1)) rocs[[paste0("modele1 - AUC = ", sprintf("%.2f", roc1$auc))]] <- roc1 roc2 <- roc(data3$USI3, predict(modele2)) rocs[[paste0("modele2 - AUC = ", sprintf("%.2f", roc2$auc))]] <- roc2 roc3 <- roc(data3$USI3, predict(modele3)) rocs[[paste0("modele3 - AUC = ", sprintf("%.2f", roc3$auc))]] <- roc3 ggroc(rocs, legacy.axes = TRUE)
说明
sprintf("%.2f", x$auc)用于格式化AUC值,%.2f表示保留2位小数,若需要更多精度可改为%.3f;- 拼接分隔符
" - "可根据需求替换为其他符号(如" | "); - 最终绘制的ROC曲线图例会直接显示
modele1 - AUC = 0.85这类包含AUC的名称。
内容的提问来源于stack exchange,提问作者Pipas
相关产品推荐
相关产品推荐

