pROC ROC曲线删除空白区域

时间:2017-02-05 22:19:09

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

我想用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)

enter image description here

我尝试了pROC帮助文件,但这对我没有帮助。对我来说更令人费解的是,Y轴看起来还不错......

我真的很感谢你的帮助!

3 个答案:

答案 0 :(得分:3)

确保绘图设备是方形的并调整边距,使顶部+底部==左侧+右侧:

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()

enter image description here

答案 1 :(得分: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)

enter image description here

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

答案 2 :(得分:0)

还有第三个答案,它将边距从绘图区域中取出,因此即使设备不是,它也会自动看起来是平方的。这可以通过将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)

enter image description here
(我添加了一个黑框来显示正在发生的事情)