gnuplotでグラフ制作
こんにちは!ねずみとりです。今回はgnuplot(グニュプロットやニュープロットと呼ばれている)の勉強をしたいと思います。私は研究でグラフを描くときはこれを使っています。UnixでもWindowsでも使えて便利です。
gnuplotとは?
様々なグラフを作ることができるオープンソースソフトウェアです。gnuplotとポストスクリプトのヴューアをインストールすることで使えます。2次元だけでなく3次元のグラフも描くことができます。プログラムのようなコードをファイルに保存し、それを実行することで指定した画像やポストスクリプトファイルを出力することができます。
エクセルじゃダメなの?
普通グラフを描きたいときはエクセルを使うと思います。しかし、エクセルでは膨大なデータを扱うことができません。一方gnuplotでは数万以上のデータをcsvやtxtファイルから読み込んでグラフを描くことができます。
グラフを描いてみる
gpファイルにコードを書いて実行することでグラフを描きます。コードを以下に示します。
set term postscript portrait enhanced linewidth 5 color solid "Helvetica" 30
set output "test.ps"
plot 'test.txt' using 1:2 title'test' with lines lc rgb "red"
1行目では出力するファイル形式や文字の色、フォントなどを設定しています。2行目は出力ファイルの名前を設定しています。最終行では"test.txt"ファイルの1列目と2列目のデータを使い、testというタイトルで赤線を描くように命令しています。データのファイルを以下に示します。
0.0 0.0
0.1 0.2
0.2 0.4
0.3 0.6
0.4 0.8
0.5 1.0
0.6 1.2
0.7 1.4
0.8 1.6
0.9 1.8
1.0 2.0
このデータをもとにグラフにプロットします。グラフを以下に示します。また、このデータではtxtファイルにしていますがcsvなどのファイルも扱えるようです。
グラフが描けました。しかし少し細長い気がしますね。気になるところをいくつか直してみます。
set term postscript portrait enhanced linewidth 5 color solid "Helvetica" 30
set output "test.ps"
set xtics 0.2
set ytics 0.2
set xlabel 'x'
set ylabel 'y'
set size 1.0, 0.6
plot 'test.txt' using 1:2 title'test' with lines lc rgb "red"
set xticsでメモリの感覚を設定、set xlabelで軸に名前を設定、set sizeでグラフの比を設定します。
グラフを修正することができました。最後に複数のグラフを描いてみようと思います。コード、データ、グラフを以下に示します。plot関数のあとに,\を加え、別のデータを加えることでグラフを増やすことができます。\は改行する場合にのみ必要です。
set term postscript portrait enhanced linewidth 5 color solid "Helvetica" 30
set output "test.ps"
set xtics 0.2
set ytics 0.3
set xlabel 'x'
set ylabel 'y'
set size 1.0, 0.6
plot 'test.txt' using 1:2 title'test1' with lines lc rgb "red",\
'test.txt' using 1:3 title'test2' with lines lc rgb "green"
0.0 0.0 0.0
0.1 0.2 0.3
0.2 0.4 0.6
0.3 0.6 0.9
0.4 0.8 1.2
0.5 1.0 1.5
0.6 1.2 1.8
0.7 1.4 2.1
0.8 1.6 2.4
0.9 1.8 2.7
1.0 2.0 3.0
おわり
ここまで見て頂きありがとうございます。ここでは折れ線グラフを出力しましたがgnuplotは散布図や棒グラフなど様々なグラフをプロットすることができ、研究で使うのに適したソフトウェアです。