2011-06-30 131 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後我最近遇到了類似的問題(是的,我們有點落後!)。事實證明,調色板(「默認」)現在打開設備,雖然它不習慣。