Script for gnuplot

最近,研究柄gnuplotでグラフを出力することがよくあります.その時,(少し修正したいなどの様々な理由で)同じグラフを何度も出力する必要が出てくるのですが,いちいち手で打つのは面倒 −> スクリプトを書いてしまえというお約束な発想に行き着きます.そんな訳で,gnuplot用のスクリプトに関する際の覚え書き.今回は,gnuplot中で使用する命令(plot, set xrange, set yrange, ...)をファイルに書いておき,そのファイルをgnuplotにロードさせる際のTips.

まずは,load命令の説明.

gnuplot> load "スクリプトファイル名"

gnuplot実行中に以下のようにコマンドを打つと,ファイルの中に書かれてあることが順に実行されていきます.ただし,load命令は引数が取れないので,例えば複数の実験データを同じ体裁でプロットする時などは少し面倒になります.そういう場合には,call命令を用います.

gnuplot> call "スクリプトファイル名" "引数1" "引数2" ...

基本的にはload命令と同じですが,引数に指定された部分がスクリプトファイルに渡されます.スクリプトファイル内では,最初に指定したものから順に $0,$1...といった感じでアクセスできます.

ここでひとつ注意事項として,gnuplotでは通常でも $1,$2 といった変数を使用しています.例えば plot "hoge.txt" using ($1+2):2 with line などのように,データ中のある列の要素に対して何らかの計算を行った後に出力したい場合にこれらの変数を用いて各要素へアクセスします.これをそのままスクリプトファイルへ書いてしまった場合,期待通りの動作を行いません(上記の例では,$1の部分に引数で受け取った値を当てはめてしまう).スクリプトファイル中で上記の例と同じ動作をさせるためには, plot "hoge.txt" using ($$1+2):2 with lineといったように$マークを2つ続けて記述しておきます.