我正在使用一些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()
答案 0 :(得分:11)
我想知道你是否有另一个命令在你给我们的代码片段之前或之后打开一个设备。当您完成所有操作后,请{†}}查看是否有设备处于打开状态。如果没有,它应该返回null设备。
以下是重新获得dev.cur()
或Rplots.pdf
的方法;如果一个设备未打开,Rplot001.png
和layout
命令会打开一个设备,并且由于没有给出文件名,因此它使用默认文件名。
par
也许看到这里发生的事情会让你知道你的代码发生了什么。
答案 1 :(得分:9)
我知道这是一个非常古老的帖子,OP肯定解决了这个问题。但我在使用情节时遇到了类似的情况。将ggplot输出转换为plotly输出会产生类似的错误,即无法打开文件'Rplots.pdf'。
我通过简单地包括:
来解决它pdf(NULL)
我不确定错误的原因,但无法弄清楚,但是这条小线帮助消除了错误并显示了我在plotly和ggplot组合中所预期的情节。
答案 2 :(得分:2)
以下是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")
看看是否有效......
答案 3 :(得分:0)
升级到R-3.0.3之后,我最近遇到了类似的问题(是的,我们有点落后了!)。事实证明,调色板(&#34;默认&#34;)现在可以打开一个设备,虽然它不习惯。