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

如何为含多条ROC曲线的ggroc绘图适配annotate文本标注命令?

给多条ROC曲线添加对应统计信息的解决方案

针对你用ggroc绘制两条ROC曲线的场景,有两种实用方法可以给每条曲线添加对应的loss、accuracy、AUC信息:

方法一:多次调用annotate分别标注

直接为每条曲线单独调用annotate,通过调整x和y参数设置不同的标注位置,避免重叠。假设out1对应第一条曲线(sc1)的统计结果,out2对应第二条曲线(sc2)的统计结果,代码示例如下:

rocobj <- pred1
rocobj1 <- pred2

# 绘制ROC曲线并添加两条曲线的标注
ggroc(list(sc1 = rocobj, sc2 = rocobj1)) +
  # 标注第一条曲线的信息,位置(0.15, 0.1)
  annotate("text", x = 0.15, y = 0.1,
           label = paste0("sc1\nloss: ", out1[[2]][1], "\naccuracy: ", out1[[2]][2], "\nAUC: ", out1[[2]][3])) +
  # 标注第二条曲线的信息,位置(0.15, 0.2)(与第一条错开)
  annotate("text", x = 0.15, y = 0.2,
           label = paste0("sc2\nloss: ", out2[[2]][1], "\naccuracy: ", out2[[2]][2], "\nAUC: ", out2[[2]][3]))

方法二:用数据框+geom_text实现关联标注

这种方法可以让标注颜色和对应曲线保持一致,更直观。先把两条曲线的统计信息整理成数据框,再通过geom_text映射到图中:

rocobj <- pred1
rocobj1 <- pred2

# 整理两条曲线的统计信息为数据框
stats_df <- data.frame(
  group = c("sc1", "sc2"),  # 对应ggroc中的曲线名称
  x = c(0.15, 0.3),         # 可以设置不同的x位置避免重叠
  y = c(0.1, 0.1),
  label = c(
    paste0("loss: ", out1[[2]][1], "\naccuracy: ", out1[[2]][2], "\nAUC: ", out1[[2]][3]),
    paste0("loss: ", out2[[2]][1], "\naccuracy: ", out2[[2]][2], "\nAUC: ", out2[[2]][3])
  )
)

# 绘图并添加关联标注
ggroc(list(sc1 = rocobj, sc2 = rocobj1)) +
  geom_text(data = stats_df, aes(x = x, y = y, label = label, color = group),
            hjust = 0, vjust = 1, show.legend = FALSE)

注意事项

  • 根据你的图布局调整x和y的数值,确保标注不会遮挡曲线或互相重叠;
  • 如果你的统计结果存储结构和示例中的out1、out2不同,替换成实际的变量名即可;
  • 方法二中的show.legend = FALSE可以避免标注额外生成图例,保持图面整洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 16:05:09