325

Rを使用して単純な線形回帰をプロットします。その画像をPNGまたはJPEGとして保存したいのですが、自動的に実行できますか?(コード経由)

2つの異なる質問があります。最初に、私はすでにモニターでプロットを見ているので、そのまま保存したいと思います。次に、プロットをまだ生成していませんが、プロットコードを実行するときに、直接ディスクに保存したいと思います。

4

11 に答える 11

402

密接に関連する2つの質問と、それぞれに対する回答があります。


1.将来、スクリプトで画像が生成されますが、ディスクに保存するにはどうすればよいですか?

プロットを保存するには、次の手順を実行する必要があります。

  1. 、、などを使用してデバイスをpng()開きますbmp()pdf()
  2. モデルをプロットする
  3. を使用してデバイスを閉じますdev.off()

プロットをpngファイルに保存するためのサンプルコード:

fit <- lm(some ~ model)

png(filename="your/file/location/name.png")
plot(fit)
dev.off()

これについては、グラフィック形式の(組み合わせた)ヘルプページ、、?pngおよび?bmp?jpeg?tiffのヘルプページで説明されています?pdf

ただし、たとえば画面上のウィンドウのサイズを変更した場合など、画面上に直接プロットされた同じプロットに対して、画像がディスク上で異なって見える場合があることに注意してください。


latticeプロットがいずれかによって作成されている場合、またはggplot2プロットを明示的に印刷する必要がある場合は注意してください。これをより詳細に説明し、R FAQへのリンクもあるこの回答を参照してください:ggplotのqplotはソーシングで実行されません


2.現在、画面上のプロットを見ているので、「そのまま」ディスクにコピーしたいと思います。

dev.print(pdf, 'filename.pdf')

これにより、インタラクティブウィンドウに対して行ったサイズ変更を尊重して、画像が完全にコピーされます。この回答の最初の部分のように、pdfなどの他のファイルタイプに置き換えることができpngます。

于 2011-08-22T07:15:41.013 に答える
88

Rでプロットを見続けたい場合は、別のオプションを使用することdev.copyです:

X11 ()
plot (x,y)

dev.copy(jpeg,filename="plot.jpg");
dev.off ();

R であまりにも多くのプロット ウィンドウが乱雑になった場合は、 を使用graphics.off()してすべてのプロット ウィンドウを閉じます。

于 2011-09-01T10:31:55.260 に答える
81

ggplot2推奨される保存方法を使用する場合は、 を使用することggsaveです。まず、呼び出すプロットを作成した後、プロットする必要がありますggsave

ggplot(...)
ggsave("plot.png")

画像の形式は、ファイル名に選択した拡張子によって決まります。追加のパラメータをggsave、特にwidthheight、およびに渡すことができますdpi

于 2012-11-17T08:53:19.063 に答える
31

このような

png('filename.png')
# make plot
dev.off()

またはこれ

# sometimes plots do better in vector graphics
svg('filename.svg')
# make plot
dev.off()

またはこれ

pdf('filename.pdf')
# make plot
dev.off()

そしておそらく他の人も。それらはすべてヘルプページにまとめてリストされています。

于 2011-08-22T07:11:15.930 に答える
11

最初の質問については、dev.printインタラクティブに作業する場合に最適だと思います。まず、プロットを視覚的に設定し、満足のいく結果が得られたら、現在のプロットをディスクに保存するよう R に依頼できます。

dev.print(pdf, file="filename.pdf");

pdfなどの他の形式に置き換えることができますpng

これにより、画面に表示されているとおりに画像がコピーされます。の問題dev.copyは、画像がしばしば異なっており、ウィンドウのサイズと縦横比を覚えていないことです。デフォルトでは、プロットが強制的に正方形になります。

2番目の質問については(他の人がすでに回答しているように)、プロットコマンドを実行する前に出力をディスクに送信する必要があります

pdf('filename.pdf')
plot( yourdata )
points (some_more_data)
dev.off() # to complete the writing process and return output to your monitor
于 2014-09-02T08:17:54.083 に答える
8

R Studio http://rstudio.org/を使用している場合は、プロットを好きな形式で任意の解像度で保存するための特別なメニューがあります。

于 2011-08-22T11:22:38.760 に答える
4

Andriepng() (最良の回答) が提案するようにbmp()、、pdf()などを使用してデバイスを開くと、プロットを含むウィンドウはポップアップ表示されず、*.png、*bmp、または *.pdf ファイルのみが作成されます。R は限られた数のグラフィック ウィンドウしか処理できないため、これは大規模な計算に便利です。

ただし、プロットを表示して保存したい場合はsavePlot(filename, type)、プロットが描画され、それらを含むウィンドウがアクティブになった後に呼び出します。

于 2015-03-10T07:08:37.990 に答える
0

これらの回答に追加するために、画面 (ネイティブ デバイス) へのプロットを生成する呼び出しを含む R スクリプトがある場合、これらはすべて pdf ファイル (非対話型シェルの既定のデバイス) "Rplots.pdf " (デフォルト名) スクリプトをターミナルから R にリダイレクトします (Linux または OS X を実行していると仮定します)。例:

R < myscript.R --no-save

これは、必要に応じて jpg/png に変換できます

于 2015-06-10T11:39:45.980 に答える