2011-06-30 48 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'を意味しましたか?私は@ Andrieの答えがどのようにPDFデバイスが作成されるのを止めるのか分かりませんが、あなたが実際に 'Rplots.png'を意味するなら、それが解決策であると見ることができますか? –

+0

@Gavin Simpson - 閉じると、Rplot001.pngファイルが生成されていて、まだクリーニングされていません。 – rjzii

+0

私はあなたの問題を再現することができません(あなたの例が自己完結型ではないために)。次のような単純なものも不正なファイルを生成しますか? '図書館(カイロ); CairoPNG(file = "graphs.png"); レイアウト(行列(c(1:4)、2)); (k in 1:4)plot(1、k)の場合は です。 dev.off() ' – Aaron

答えて

9

をあなたは別のものを持っている場合、私は疑問に思いますあなたが私たちに与えたコードスニペットの前後にデバイスを開くコマンド。すべて完了したら、dev.cur()を実行して、デバイスが開いたままであるかどうかを確認します。そうでない場合は、nullデバイスを返す必要があります。

Rplots.pdfまたはRplot001.pngを取得する方法は次のとおりです。 layoutおよびparコマンドは、デバイスが開いていない場合はデバイスを開き、ファイル名が指定されていないため、デフォルトのファイル名を使用します。

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=...を取り、そしてfileパラメータとしてCairoにこれを渡すことを示しています。

私は、これは混乱を招くことができますどのように見ることができますが、ポイントは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) 

私は、エラーの原因のわからないんだけど、それを把握することができたが、この小さな行は、エラーを除去して、私を表示役立っていませんplotlyとggplotの組み合わせで期待されるようなプロット。

0

R-3.0.3にアップグレードした後、私は最近同様の問題を抱えていました(はい、少し遅れています)。 パレット( "default")は、まだ使用されていませんでしたが、今すぐデバイスを開きます。

関連する問題