R "stopping" 中对角线处的多边形

Polygon in R "stopping" at the diagonal

上获得帮助后,我开始重现结果 "manually" 并生成相同的 ROC 曲线。

这几乎成功了,除了两个细节。第一,我无法将绘图上 y axis 的限制更改为左侧;第二,右侧图上 AUC 的填充在对角线处停止:

左图的代码来自对先前问题的回答,但抑制了数据的所有先前格式,归结为:

plot.roc(data$outcome, data$s100b, 
         auc.polygon = TRUE, 
         auc.polygon.col=rgb(.35,0.31,0.61, alpha = 0.4), 
         auc.polygon.border=rgb(.35,0.31,0.61, 0.4))

右边的代码是:

plot(rock[,6] ~ rock[,7], xlim = rev(range(rock[,7])), type = 'l') 
polygon(rock[,6] ~ rock[,7], xlim=rev(range(rock[,7])), col = 3)
segments(1,0,0,1, col=6)

... 和 rock 是一个数据框放在一起:

head(rock)
           cut positive negative tru_pos tru_neg      sens     specif
[1,] 0.0000000      113        0      41       0 1.0000000 0.00000000
[2,] 0.1697713      112        1      40       0 0.9756098 0.00000000
[3,] 0.1767962      107        6      40       5 0.9756098 0.06944444
[4,] 0.1840474      104        9      40       8 0.9756098 0.11111111
[5,] 0.1915268      102       11      40      10 0.9756098 0.13888889
[6,] 0.1992360       93       20      37      16 0.9024390 0.22222222

如何让绿色填充对角线下方的下三角?如果可能的话,我可以偷偷提出第二个关于将左侧的 y 轴从 (-0.5, 0.5) 减少到 (0, 1) 的快速问题。

编辑:

在末尾添加一行零,我生成了这个:

还不错,但是对于右边距上的垂直蓝线...

您在调用 polygon 时遗漏了点 (0, 0)。

如果您在 ROC 数据上调用它,polygon 将通过连接曲线的第一个点和最后一个点来简单地闭合形状。它无法知道您希望它通过 (0, 0),因此您必须明确指定它,例如:

poly <- rbind(rock[,6:7], c(0,0))
polygon(poly, xlim=rev(range(rock[,7])), col = 3)