我试图在网站上创建一个类似的图。但是,我遇到了一个更基本的问题:我的R图中有一些空白区域,我想摆脱它。这是使用包pROC
。我已经包含了一个可重现的例子,说明了这个问题:
library("pROC")
plot.roc(c(1, 1, 0, 0, 1), c(3, 4, 5, 6, 7), legacy.axes=TRUE)
上面的代码最终看起来像下图:
如您所见,图像在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)
There is no white space in the original picture that used the exact same code
我的R设置可能有问题,但代码在第二台计算机上运行时问题仍然存在。有人能帮忙吗?
答案 0 :(得分:0)
答案已在对该问题的评论中给出,但我认为值得在正确的答案中写下来。还应该注意,你和链接的例子都没有指定用于保存图的图形设备的任何内容,所以说你“使用完全相同的代码”有点误导。
通常ROC曲线应该在单位平方内绘制,因此灵敏度和特异性占用相同的空间,使得可视化和比较更容易(通常ROC曲线用于显示特异性和灵敏度之间的权衡,并给出其中一个更多的空间会使这种比较更加困难。)
pROC包通过在plot.window
的内部调用中设置asp=1
来实现这一点。您有两种选择:
设置asp=NA
(或类似)并“释放”轴(请注意,您的ROC曲线不是单位正方形,而是单位矩形,因此可能更难以解释):< / p>
rocobj1 <- plot.roc(aSAH$outcome, aSAH$s100, asp = NA)
在调用s
之前将the graphical parameter pty
更改为plot.roc
,以便边距位于图表之外:
par(pty = "s")
rocobj1 <- plot.roc(aSAH$outcome, aSAH$s100)