Как я могу предотвратить создание Rplots.pdf? - PullRequest
18 голосов
/ 30 июня 2011

Я работаю с кодом 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()

Ответы [ 4 ]

11 голосов
/ 01 июля 2011

Интересно, есть ли у вас другая команда, которая открывает устройство до или после фрагмента кода, который вы нам дали? Когда вы закончите, запустите dev.cur(), чтобы увидеть, осталось ли устройство открытым. Если нет, он должен вернуть нулевое устройство.

Вот способы, которыми вы можете воссоздать получение Rplots.pdf или Rplot001.png; команды layout и par открывают устройство, если оно не открыто, и поскольку имя файла не указано, оно использует имя файла по умолчанию.

options(device="pdf")
layout(1:4)
dev.off()

options(device="png")
par()
dev.off()

Возможно, увидев это, вы поймете, что происходит с вашим кодом.

9 голосов
/ 27 июля 2016

Я знаю, что это очень старый пост, и, конечно, ОП решил это. Но я столкнулся с подобной ситуацией, работая с сюжетом. Преобразование выходных данных ggplot в графические выходные данные привело к аналогичной ошибке невозможности открыть файл 'Rplots.pdf'.

Я решил это просто включив:

pdf(NULL)

Я не уверен в причине ошибки, не смог понять это, но эта небольшая линия помогла устранить ошибку и отобразить мои графики, как и следовало ожидать в комбинациях графика и ggplot.

2 голосов
/ 30 июня 2011

Вот исходный код для 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")

Посмотрите, работает ли это ...

0 голосов
/ 29 июля 2016

У меня недавно была похожая проблема после обновления до R-3.0.3 (да, мы немного отстали!). Оказывается, палитра («по умолчанию») теперь открывает устройство, хотя раньше не было.

...