Белые поля на графике R с использованием функции plot.roc()

Я пытался создать фигуру, похожую на фигуру на сайте. Однако я столкнулся с более простой проблемой: в моем R-графике есть пробелы, от которых я хотел бы избавиться. Это использует пакет pROC, Я включил воспроизводимый пример, который иллюстрирует проблему:

library("pROC")
plot.roc(c(1, 1, 0, 0, 1), c(3, 4, 5, 6, 7), legacy.axes=TRUE)

Приведенный выше код в конечном итоге выглядит следующим образом:

plot.roc () проблема: воспроизводимый пример # 1 вывод

Как вы можете видеть, изображение имеет много пустого пространства между осью 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)

plot.roc () проблема: воспроизводимый пример # 2 вывод

На исходном рисунке нет пробелов, в которых использовался точно такой же код.

Возможно, что-то не так с моими настройками R, хотя проблемы сохранялись при запуске кода на втором компьютере. Кто-нибудь может помочь?

1 ответ

Ответ был дан в комментариях к вопросу, но я думаю, что это стоит записать в правильном ответе. Следует также отметить, что и вы, и связанный пример не указали ничего о графическом устройстве, используемом для сохранения графика, поэтому утверждение, что вы "использовали точно такой же код", немного вводит в заблуждение.

Обычно кривые ROC должны быть построены в единичном квадрате, чтобы чувствительность и специфичность занимали одно и то же пространство, облегчая визуализацию и сравнение (обычно кривые ROC служат для отображения компромисса между специфичностью и чувствительностью, и предоставление одной из них большего пространства сделать это сравнение более сложным).

Пакет pROC делает это, устанавливая asp=1 во внутреннем звонке plot.window, У вас есть два варианта для продолжения:

  1. Задавать asp=NA (или аналогичный) и "освободите" ось (обратите внимание, что ваша ROC-кривая будет не единичным квадратом, а прямоугольником, что потенциально затруднит ее интерпретацию):

    rocobj1 <- plot.roc(aSAH$outcome, aSAH$s100, asp = NA)
    

    ROC кривые с asp = NA

  2. Изменение графического параметра pty в s перед звонком plot.roc так что поля находятся за пределами участка:

    par(pty = "s")
    rocobj1 <- plot.roc(aSAH$outcome, aSAH$s100)
    

    ROC кривые с номиналом (pty =

Другие вопросы по тегам