gnuplotでファイルからデータを読み込んでグラフを描く
Macのgnuplotでのグラフの描画方法のメモ。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 (念のため,画面上へグラフを再描画)