【问题标题】:pROC ROC curves remove empty spacepROC ROC 曲线去除空白区域
【发布时间】:2017-06-22 19:35:01
【问题描述】:

我想用 pRoC 绘制 ROC 曲线。 但是由于某种原因,x 轴的任一侧都有额外的空白空间,我无法使用 xlim 将其移除。一些示例代码:

library(pROC)
n = c(4, 3, 5) 
b = c(TRUE, FALSE, TRUE) 
df = data.frame(n, b) 
rocobj <- plot.roc(df$b, df$n, percent = TRUE, main="ROC", col="#1c61b6", add=FALSE)

我尝试了 pROC 帮助文件,但这并没有真正帮助我。更让我不解的是,Y轴看起来还不错……

非常感谢您的帮助!

【问题讨论】:

    标签: axis-labels roc proc-r-package


    【解决方案1】:

    确保绘图设备是方形的,并调整边距,使上 + 下 == 左 + 右:

    library(pROC)
    png("test.png", width = 480, height = 480)
    par(mar = c(4, 4, 4, 4)+.1)
    n = c(4, 3, 5) 
    b = c(TRUE, FALSE, TRUE)
    rocobj <- plot.roc(b, n, percent = TRUE, main="ROC", col="#1c61b6", add=FALSE)
    dev.off()
    

    【讨论】:

    • 嗨 Calimo,感谢您的帮助!这似乎有效。但是,有没有办法在不先将绘图写入文件(也就是 R 内部)的情况下解决这个问题?
    • 您应该也可以使用您的交互式设备来做到这一点。 getOption("device")(width = ..., height = ...)
    【解决方案2】:

    如果您不介意轴扭曲,另一个答案是使用asp 参数。默认设置为 1,确保两个轴具有相同的比例且 ROC 曲线为平方*,但您可以使用 asp = NA 将其关闭:

    library(pROC)
    par(mar = c(4, 4, 4, 4)+.1)
    n = c(4, 3, 5) 
    b = c(TRUE, FALSE, TRUE)
    rocobj <- plot.roc(b, n, percent = TRUE, main="ROC", col="#1c61b6", add=FALSE, asp = NA)
    

    * 如果您想直观地解释它,那么拥有平方 ROC 曲线很重要。例如,您可能希望通过它们与对角线的距离来比较几个局部最大值:只有当两个轴具有相同的比例时,您才能这样做。因此,如果您想这样做,请确保遵循我的其他答案。

    【讨论】:

      【解决方案3】:

      还有第三个答案,它将边距从绘图区域中取出,因此即使设备不存在,它也会自动看起来是方形的。这是通过将graphical parameter pty 设置为"s" 来完成的:

      library(pROC)
      par(pty = "s")
      n = c(4, 3, 5) 
      b = c(TRUE, FALSE, TRUE)
      rocobj <- plot.roc(b, n, percent = TRUE, main="ROC", col="#1c61b6", add=FALSE, asp = NA)
      


      (我添加了一个黑框来可视化正在发生的事情)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-06
        • 1970-01-01
        • 1970-01-01
        • 2018-04-13
        • 1970-01-01
        • 2021-03-21
        • 2023-03-10
        • 2021-02-17
        相关资源
        最近更新 更多