[英]White margins within R plot using plot.roc() function
我试图在网站上创建一个类似于一个的图形。 但是,我遇到了一个更基本的问题:我的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)
我的R设置可能有问题,但在第二台计算机上运行代码时问题仍然存在。 有人能协助吗?
答案已经在对这个问题的评论中给出,但我认为值得在正确的答案中写下来。 还应该注意的是,您和链接的示例都省略了指定用于保存绘图的图形设备的任何内容,因此说“使用完全相同的代码”有点误导。
通常ROC曲线应该在单位平方内绘制,因此灵敏度和特异性占用相同的空间,使得可视化和比较更容易(通常ROC曲线用于显示特异性和灵敏度之间的权衡,并给予其中一个更多空间使这种比较更加困难)。
pROC包通过在plot.window
的内部调用中设置asp=1
来plot.window
。 您有两种选择:
设置asp=NA
(或类似)并“释放”轴(请注意,您的ROC曲线不是单位正方形,而是单位矩形,因此可能更难以解释):
rocobj1 <- plot.roc(aSAH$outcome, aSAH$s100, asp = NA)
在调用plot.roc
之前将图形参数pty
更改为s
, plot.roc
使边距位于绘图之外:
par(pty = "s") rocobj1 <- plot.roc(aSAH$outcome, aSAH$s100)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.