gnuplotでファイルからデータを読み込んでグラフを描く

Macgnuplotでのグラフの描画方法のメモ。pngの出力部分以外はMac以外でも同様だと思う。

ファイルからデータを読み込んでグラフ描画

ファイルに以下のようにデータがあるとする。各列はタブ区切りとなっている。

data.txt

#コメント
#X軸 Y軸データ1 Y軸データ2
0   0.1 2.0
1   0.2 1.9
2   0.3 1.8
3   0.4 1.7
4   0.5 1.6

このとき以下の要領でグラフを描画できる。

set xlabel "X axis"
set ylabel "Y axis"
plot "data.txt" using 1:(log($2)/log(4)) w lp title "data1"
replot "data.txt" using 1:3 w lp title "data2"

set xlabel "X axis"で、x軸のラベル名を設定している。

using 1:(log($2)/log(4))でx軸とy軸のデータを指定している。コロンの左側がx軸のデータでこの場合、1列目のデータを指定している。コロンの左側は、$2が2列目のデータを表すので、2列目のデータのlogをlog(4)で割った数をy軸の値としている。

w lpは描画オプションの内の一つで、with linespointsの短縮形である。linespointsはグラフを折れ線で表示するオプションで、他の表示方法として以下のようなものがある。

  • lines ライン表示
  • points データポイント表示
  • linespoints ラインとデータポイント表示(折れ線表示)
  • impulses インパルス表示
  • dots ドット表示
  • steps ステップ表示
  • errorbars 誤差グラフ
  • boxes 棒グラフ
  • boxerrorbars 誤差と棒グラフ

title "data1"は、グラフのタイトルを指定している。

また、plotの次がreplotになっているが、既に描画済のグラフにグラフを更に描画する場合は、plotではなくreplotを使う必要がある。

グラフのpngへの出力

例えば、以下のコマンドが実行されているとする。

set xlabel "X axis"
set ylabel "Y axis"
plot "data.txt" using 1:(log($2)/log(4)) w lp title "data1"
replot "data.txt" using 1:$3 w lp title "data2"

これで、画面上にグラフが描かれていることになる。この時、このグラフをPngに出力するには、以下を実行すれば良い。

set terminal png (PNG形式ファイル出力へ切り替えを指示)
set output "sample.png" (sample.pngという名前のファイルへの出力を指示)
replot (グラフを再描画,ここではファイルへ出力される)
set terminal x11 (一旦,グラフ出力へ画面表示へ切り替える)
replot (念のため,画面上へグラフを再描画)

参考

GNUPLOTを用いたグラフ作成