gpt4 book ai didi

r - 使用 plot.roc() 函数的 R 绘图中的白色边距

转载 作者:行者123 更新时间:2023-12-05 04:13:02 25 4
gpt4 key购买 nike

我试图创建一个类似于网站上的图形。但是,我遇到了一个更基本的问题:我想去掉 R 图中的一些空白区域。这是使用包 pROC。我提供了一个可重现的示例来说明该问题:

library("pROC")
plot.roc(c(1, 1, 0, 0, 1), c(3, 4, 5, 6, 7), legacy.axes=TRUE)

上面的代码最终看起来像下图:

plot.roc() issue: reproducible example #1 output

如您所见,图像的 y 轴和图的最左侧部分之间有很多空白区域,图的右侧也类似。该问题仅在使用 plot.roc() 时出现。我什至尝试制作我试图模拟的情节(使用网站上提供的代码),但最终还是得到了不同的图像(第一段中描述的图像代码包含在下面):

library(pROC)
data(aSAH)

rocobj1 <- plot.roc(aSAH$outcome, aSAH$s100, main="Statistical comparison", percent=TRUE, col="#1c61b6")
rocobj2 <- lines.roc(aSAH$outcome, aSAH$ndka, percent=TRUE, col="#008600")
testobj <- roc.test(rocobj1, rocobj2)

text(50, 50, labels=paste("p-value =", format.pval(testobj$p.value)), adj=c(0, .5))

legend("bottomright", legend=c("S100B", "NDKA"), col=c("#1c61b6", "#008600"), lwd=2)

plot.roc() issue: reproducible example #2 output

There is no white space in the original picture that used the exact same code .

我的 R 设置可能有问题,但在第二台计算机上运行代码时问题仍然存在。有人可以提供帮助吗?

最佳答案

答案已在问题的评论中给出,但我认为值得在适当的答案中写下来。还应该注意的是,您和链接的示例都没有指定有关用于保存绘图的图形设备的任何内容,因此说您“使用了完全相同的代码”有点误导。

通常 ROC 曲线应绘制在单位正方形内,以便灵敏​​度和特异性占据相同的空间,使可视化和比较更容易(通常 ROC 曲线用于显示特异性和灵敏度之间的权衡,并给出其中之一更多的空间会使这种比较更加困难)。

pROC 包通过在对 plot.window 的内部调用中设置 asp=1 来做到这一点.您有两种选择可以继续:

  1. 设置 asp=NA(或类似的)并“释放”轴(请注意,您的 ROC 曲线将不是单位正方形而是单位矩形,这可能会更加困难解释):

    rocobj1 <- plot.roc(aSAH$outcome, aSAH$s100, asp = NA)

    ROC curves with asp = NA

  2. 改变 the graphical parameter pty在调用 plot.roc 之前到 s 以便边距在绘图之外:

    par(pty = "s")
    rocobj1 <- plot.roc(aSAH$outcome, aSAH$s100)

    ROC curves with par(pty = "s")

关于r - 使用 plot.roc() 函数的 R 绘图中的白色边距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38724796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com