グラフを保存する

gnuplotで描いたグラフを他のソフトウェアで扱いたい場合,グラフを画像データとして保存する必要があります。

一つの方法は画面またはウインドウをスクリーンショットで取り込むやり方です。 RedHat LinuxのようなGNOME/UNIX環境であればGIMPが使えますし, WindowsではAlt+PrintScreenを押してクリップボードにコピーしてからMS-ペイントなどの適当な画像処理ソフトウェア上で貼り付ければ, 好きなソフトウェアで処理することができます。

もう一つは,gnuplot自身で保存する方法です。 ここではこちらの方法を説明します。画像の形式はPNGまたはEPSです。

PNGで保存

画像をWebに載せる場合はPNGが最適です。 まずset terminalでグラフィックデバイスにpngを設定してから, set outputで出力するファイルを指定します。 そして最後にplotします。

# 出力ファイル

gnuplot> set terminal png
gnuplot> set output 'sinc.png'
gnuplot> plot sin(pi*x)/(pi*x)

Windowsでこの例をそのまま実行すると,sinc.pngファイルはgnuplotの実行ファイル (wgnupl32.exe) が存在する場所に保存されます。 これはカレントディレクトリ(ワーキングディレクトリ)がそのフォルダに設定されているからで, pwdコマンドで現在のカレントディレクトリを確認することができます。

gnuplot> pwd
C:\software\mm\graphic\gnuplot373

この挙動が気に入らなければ,

gnuplot> cd 'd:\tmp'

のようにcdコマンドを使ってカレントディレクトリを変更するか,あるいは

gnuplot> set output 'd:\tmp\sinc.png'

のように出力先を絶対パスで記述してください。

再度画面に表示するようにするには,

gnuplot> set terminal x11  # Windowsならset terminal windows
gnuplot> set output

として設定を戻してからplotします。 例のように「set output」だけを入力すると,出力先は標準出力(STDOUT)に設定されます。

ところで,一度「set output FILE」を実行してplotすると,その後に何度もplotし直しても,出力先の画像は上書きされません。 ファイル名は同じでも変えても構わないので,plotし直す前に毎回set outputを実行してください。

EPSで保存

TeX内に図を挿入する場合はEPSが適しています。 PNGで保存する場合と同様に, まずset terminalでグラフィックデバイスにpostscript epsを設定してから, set outputで出力するファイルを指定します。 そして最後にplotします。

# 出力ファイル / 出力イメージ

gnuplot> set terminal postscript eps
gnuplot> set output 'sinc.eps'
gnuplot> plot sin(pi*x)/(pi*x)

PNGで保存する場合の注意事項も読んでおいてください。

文字の大きさが小さいと感じる場合は,set sizeで図全体の大きさを小さくするといいでしょう。 set sizeしても文字の大きさは変わらないので,相対的に文字が大きくなります。

# 出力ファイル / 出力イメージ

gnuplot> set output 'sinc_small.eps'
gnuplot> set size 0.5, 0.5
gnuplot> replot

replotでグラフを重ねて描く場合の注意

一度plotすると,再度plotあるいはreplotし直しても,出力先の画像は上書きされません。

gnuplot> set term png          # termはterminalの省略形
gnuplot> set output 'tri.png'
gnuplot> plot sin(x)
gnuplot> replot cos(x)         # 更新されない
gnuplot> replot tan(x)         # 更新されない

そこで最後のreplotの前にset outputを置くようにします。

gnuplot> set term png
gnuplot> set output '/dev/null'  # Windowsでは不要
gnuplot> plot sin(x)
gnuplot> replot cos(x)
gnuplot> set output 'tri.png'
gnuplot> replot tan(x)

ファイル'/dev/null'は単に出力を捨てるために使われます。 Windowsで出力のたびに「set terminal png」を毎回入力しない場合は, 「set output '/dev/null'」のかわりに「set output」で標準出力に設定しておくとよいでしょう。

というより,ファイルに落とすような場合はreplotで付け足していく方法を使わない方が楽だと思います。

$Id: save_graphs.shtml 1289 2007-02-04 13:22:39Z SYSTEM $