2011-06-30 96 views
10

我正在使用一些R代码来生成许多图像作为png文件;然而,Rplots.pdf文件不断在工作目录中生成,有没有办法来防止这种情况发生?如何防止生成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

你的意思是'Rplots.png'?我看不到@安德利的答案会如何阻止PDF设备被创建,但如果您实际上指的是'Rplots.png',可以看到它是一种解决方案。 –

+0

@Gavin Simpson - 关闭,现在有一个Rplot001.png文件正在生成并且未被清理。 – rjzii

+0

我无法重现您的问题(部分原因是您的示例不是自包含的)。像下面这样简单的东西也会产生流氓文件吗? '库(开罗); CairoPNG(file =“graphs.png”); 布局(矩阵(c(1:4),2)); (1,k)中的(k in 1:4)plot(012,k) dev.off()' – Aaron

回答

9

我不知道你有另一在您给我们的代码片段之前或之后打开设备的命令。完成全部运行后,运行dev.cur()以查看是否有设备保持打开状态。如果不是,它应该返回空设备。

以下是您可以重新创建获取Rplots.pdfRplot001.png; layoutpar命令会打开一个设备,如果其中一个未打开,并且由于没有给出文件名,它将使用默认文件名。

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

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

也许看到发生在这里会给你一个关于你的代码发生了什么的线索。

+1

这最终成为问题 - 一个没有打开文件的情况下生成的情节,尽管代码中的位置非常模糊。 – rjzii

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=...作为参数,并将这Cairofile参数。

我可以看到这是如何导致混乱,但问题是,你对CairoPNG调用应该是:

CairoPNG(filename="graphs.png") 

看看是否能工程...

+0

解决这个问题还有很长的路要走,但它看起来像'options(device =“png”)'也是正确运行所必需的。 – rjzii

+0

做了一些更多的检查,并且生成了'options(device =“png”)'在Rplot001.png文件上的时间,同样,如果它不在'Rplots.pdf'中,则生成该文件。任何想法可能会发生什么? 'Rplot001.png'文件在聚合报告中包含有效数据。 – rjzii

+0

对不起,没有。我从未使用过“开罗”。 :-( – Andrie

3

我知道这是一个很老的帖子,当然OP已经解决了这个问题。但是我在剧情工作时遇到了类似的情况。将ggplot输出转换为绘图输出会产生类似的错误,即无法打开文件'Rplots.pdf'。

我解决它通过简单地包括:

pdf(NULL) 

我不知道对于出错的原因,一直没能明白这一点,但这个小行帮助消除错误并显示我的情节,如我预计的情节和ggplot组合。

0

升级到R-3.0.3后我最近遇到了类似的问题(是的,我们有点落后!)。事实证明,调色板(“默认”)现在打开设备,虽然它不习惯。