Rを使用して単純な線形回帰をプロットします。その画像をPNGまたはJPEGとして保存したいのですが、自動的に実行できますか?(コード経由)
2つの異なる質問があります。1つ目は、既にプロットをモニターで見ているので、そのまま保存したいです。2つ目は、まだプロットを生成していませんが、プロットコードを実行するときに直接ディスクに保存したいです。
Rを使用して単純な線形回帰をプロットします。その画像をPNGまたはJPEGとして保存したいのですが、自動的に実行できますか?(コード経由)
2つの異なる質問があります。1つ目は、既にプロットをモニターで見ているので、そのまま保存したいです。2つ目は、まだプロットを生成していませんが、プロットコードを実行するときに直接ディスクに保存したいです。
回答:
密接に関連する2つの質問と、それぞれに対する回答があります。
プロットを保存するには、以下を実行する必要があります。
png()
、bmp()
、pdf()
または同様の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がソースで実行されません
dev.print(pdf, 'filename.pdf')
これにより、対話型ウィンドウに対して行ったサイズ変更を尊重して、画像が完全にコピーされます。この回答の最初の部分のように、pdf
などの他のファイルタイプに置き換えることができpng
ます。
getwd()
dev.print
。2つの密接に関連する質問があり、それぞれに異なる答えが必要だと思います。2番目のサブ質問は、基本的には「自分の画面に既にプロットした画像をどのように保存するのですか?」です。私の編集があまり良くない場合はお詫びします。私の編集を自由に改善してください。
m3=garchFit(~arma(3,0)+garch(1,1))
とを使用するとしplot(m3)
ます。
Rでプロットを見続けたい場合は、次のオプションを使用することもできますdev.copy
。
X11 ()
plot (x,y)
dev.copy(jpeg,filename="plot.jpg");
dev.off ();
Rでプロットウィンドウが多すぎる場合は、を使用graphics.off()
してすべてのプロットウィンドウを閉じます。
dev.print
画面から画像を正確にコピーするので、より良いです。dev.copy
デフォルトでは、すべての画像が強制的に正方形になります。インタラクティブにすべてをうまく設定した場合、これはイライラします
dev.print()
寸法を定義するために、幅と高さのパラメータで。例 dev.copy(device = png, filename = 'MyPlot.png', width = 1000, height = 500) dev.off()
ggplot2
保存の優先方法を使用する場合は、を使用することggsave
です。最初に、呼び出すプロットを作成した後、プロットする必要がありますggsave
。
ggplot(...)
ggsave("plot.png")
画像の形式は、ファイル名に選択した拡張子によって決まります。追加のパラメータはに渡すことができggsave
、特に、width
、height
、とdpi
。
dev
、このソリューションはグラフィックデバイスのない仮想マシンで機能しました。
このような
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()
そしておそらく他の人も。これらはすべてヘルプページにまとめてリストされています。
最初の質問については、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
R Studio http://rstudio.org/を使用している場合は、プロットを好きな形式で、選択した解像度で保存できる特別なメニューがあります
あなたが使用してデバイスを開くとpng()
、bmp()
、pdf()
によって提案さなどAndrie(最良の答え)、プロットとの窓が開いてポップアップしません、ちょうど* .PNG、* BMPまたは* .pdfファイルが作成されます。Rは限られた数のグラフィックウィンドウしか処理できないため、これは大量の計算に便利です。
ただし、プロットを表示して保存する場合はsavePlot(filename, type)
、プロットが描画され、それらを含むウィンドウがアクティブになった後で呼び出します。
plotpath<- file.path(path, "PLOT_name",paste("plot_",file,".png",sep=""))
png(filename=plotpath)
plot(x,y, main= file)
dev.off()
場合によっては、ベースrプロットの保存と印刷の両方が必要になります。私は少し時間をかけて、このユーティリティ関数を思いつきました:
x = 1:10
basesave = function(expr, filename, print=T) {
#extension
exten = stringr::str_match(filename, "\\.(\\w+)$")[, 2]
switch(exten,
png = {
png(filename)
eval(expr, envir = parent.frame())
dev.off()
},
{stop("filetype not recognized")})
#print?
if (print) eval(expr, envir = parent.frame())
invisible(NULL)
}
#plots, but doesn't save
plot(x)
#saves, but doesn't plot
png("test.png")
plot(x)
dev.off()
#both
basesave(quote(plot(x)), "test.png")
#works with pipe too
quote(plot(x)) %>% basesave("test.png")
を使用する必要があることに注意してくださいquote
。そうでない場合、plot(x)
呼び出しはグローバル環境で実行され、NULL
に渡されbasesave()
ます。
dev.copy(png,'path/pngFile.png')
plot(YData ~ XData, data = mydata)
dev.off()