Как предотвратить создание Rplots.pdf?
Я работаю с некоторым R-кодом, который генерирует несколько изображений в виде png файлов; однако, файл Rplots.pdf
продолжает генерироваться в рабочем каталоге, есть ли способ предотвратить это?
library(Cairo)
CairoPNG(file = "graphs.png")
nf <- layout(matrix(c(1:8), 2, 4, byrow=T), c(1, 1), c(1, 1, 1, 1), TRUE)
for (k in 1:num.k) {
plotMatrix(connect.matrix.ordered[k,,], log = F, main = paste("k=", k.vector[k]), sub = paste("Cophenetic coef.=", rho[k]), ylab = "samples", xlab ="samples")
}
y.range <- c(1 - 2*(1 - min(rho)), 1)
plot(k.vector, rho, main ="Cophenetic Coefficient", xlim=c(k.init, k.final), ylim=y.range, xlab = "k", ylab="Cophenetic correlation", type = "n")
lines(k.vector, rho, type = "l", col = "black")
points(k.vector, rho, pch=22, type = "p", cex = 1.25, bg = "black", col = "black")
dev.off()
Ответы
Ответ 1
Интересно, есть ли у вас другая команда, которая открывает устройство до или после фрагмента кода, который вы нам дали. Когда все закончится, запустите dev.cur()
, чтобы узнать, осталось ли устройство открытым. Если нет, он должен вернуть нулевое устройство.
Ниже приведены способы воссоздания получения Rplots.pdf
или Rplot001.png
; команды layout
и par
открывают устройство, если оно не открыто, и поскольку имя файла не указано, оно использует имя файла по умолчанию.
options(device="pdf")
layout(1:4)
dev.off()
options(device="png")
par()
dev.off()
Возможно, увидев, что это произойдет, даст вам представление о том, что происходит с вашим кодом.
Ответ 2
Я знаю, что это очень старый пост, и, конечно, ОП решил это. Но я столкнулся с подобной ситуацией, работая с заговорщиком. Преобразование вывода ggplot в графический вывод сгенерировало аналогичную ошибку из-за невозможности открыть файл "Rplots.pdf".
Я решил это, просто включив:
pdf(NULL)
Я не уверен в причине ошибки, не смог понять это, но эта небольшая строка помогла удалить ошибку и отобразить мои сюжеты, как я ожидал бы в комбинациях plotly и ggplot.
Ответ 3
Вот исходный код для CairoPNG
:
function (filename = "Rplot%03d.png", width = 480, height = 480,
pointsize = 12, bg = "white", res = NA, ...)
{
Cairo(width, height, type = "png", file = filename, pointsize = pointsize,
bg = bg, ...)
}
Это говорит о том, что CairoPNG
принимает filename=...
в качестве параметра и передает это значение в Cairo
как параметр file
.
Я вижу, как это может привести к путанице, но дело в том, что ваш вызов CairoPNG
должен быть:
CairoPNG(filename="graphs.png")
Посмотрите, работает ли это...
Ответ 4
У меня была аналогичная проблема недавно после обновления до R-3.0.3 (да, мы немного отстаем!). Оказывается, теперь палитра ( "по умолчанию" ) открывает устройство, хотя оно не использовалось.