我想用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轴看起来还不错......
我真的很感谢你的帮助!
答案 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()
答案 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)
*如果您想要直观地解释它,那么具有平方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)