●
gnuplot
の利用法数値計算結果をグラフで表現する場合にgnuplotと呼ばれるツールを利用することが多い.
1. gnuplot
でグラフするためのデータをつくるgnuplotでグラフを作成する場合には,作成したいデータをファイルに保存しておく必要がある.
プログラムの実行結果を foo.datというファイル名で出力するためには,
./program > foo.dat
として,出力結果をファイルに保存すればよい.
gnuplotでは,各行に横軸の値と縦軸の値を空白で区切ったデータを用いる. たとえば,次のデー
タは,y= expxの値をx= 1.0からx= 2.0まで, 0.1刻みにxと exp(x)の値を空白で区切って 出力したものである.
1.000000 2.718282 1.100000 3.004166 1.200000 3.320117 1.300000 3.669297 1.400000 4.055200 1.500000 4.481689 1.600000 4.953032 1.700000 5.473947 1.800000 6.049647 1.900000 6.685894 2.000000 7.389056
以下では,このようなデータがファイルfoo.datに保存されている場合に, gnuplotを利用してこ れを図示する方法を考える.
2. gnuplot
の起動gnuplotはコマンド名gnuplotで起動できる. gnuplotを起動すると,次のように表示される.
Terminal type set to ’svg’
gnuplot>
この“gnuplot>”以後の部分にgnuplotのコマンドを入力することができる.
3.
グラフの出力形式の変更ここで表示されている“Terminal type set to ’svg’”の“svg”の部分は,グラフをどのよう なファイル形式(表示形式)で出力するかを示している. グラフをディスプレイに表示するには,
“set terminal aqua” と指定する. 他の出力形式には以下のようなものがある. gnuplotでは数
多くの出力形式を選択できるが,以下のいずれかを用いることが多い.
• aqua形式:MacOSXでディスプレイにグラフを出力する.
“set terminal aqua”
• x11形式:LinuxなどのUNIXシステムでディスプレイにグラフを出力する.
“set terminal x11”
• svg形式:グラフをsvgフォーマットのファイルに保存する. MacOSXではsvgフォーマッ トファイルはSafariで見ることができる.
“set terminal x11”
“set output "xxx.svg"”(この部分は,出力するファイル名を指定している)
• eps形式:グラフをepsフォーマットのファイルに保存する. TEX などの文書にグラフを埋 め込むときに利用する.
“set terminal postscript eps color”
“set output "xxx.eps"”
• pdf形式:グラフをpdfフォーマットのファイルに保存する.
“set terminal pdf”
“set output "xxx.pdf"”
• pstricks形式:グラフをLATEXのpstricksで利用できるファイルに保存する.
“set terminal pstricks”
“set output "xxx.tex"”
4. gnuplot
でグラフを作成する(1)
【グラフの描画】 ファイルに保存したデータをグラフとして表示するには,次のように入力する.
ここで, foo.datがグラフを作成するための元となるデータが入ったファイルである. (See
Fig.1)
gnuplot> plot "foo.dat" with lines
【対数グラフ】 y軸を対数目盛りにする. (See Fig.2)
gnuplot> set logscale y
gnuplot> plot "foo.dat" with lines
これによって得た結果がFig. 2である. なお,x軸を対数目盛りにするには,set logscale x,両方の軸を対数目盛りにするには,set logscaleとする. また,unset xxxxでset xxxx と設定した内容をキャンセルできる.
【グラフの種類の変更】 gnuplot> plot "foo.dat" with linespoints
とすると, Fig. 3のような結果を得る. また,「点」だけをプロットする場合にはwith points とする.
【複数のデータ】 複数のデータを一つのグラフにまとめるには,
gnuplot> plot "foo.dat" with linespoints, "bar.dat" with lines
とすればよい. (このように指定すれば, いくらでも多くのデータを同時にプロットできる.)
【グラフの再描画】 なお,グラフをファイルに保存している場合,描画条件を変更したり,データ を変更した後には,再度set outputコマンドを指定する必要がある.
gnuplot> set output "foo.svg"
これをやらないと,データが上書きされる.
【終了】 gnuplotはquit命令で終了できる.
2.5 3 3.5 4 4.5 5 5.5 6 6.5 7 7.5
1 1.2 1.4 1.6 1.8 2
"foo.dat"
1 10
1 1.2 1.4 1.6 1.8 2
"foo.dat"
Fig.1 Fig.2
1 10
1 1.2 1.4 1.6 1.8 2
"foo.dat"
1 10 100
1 1.2 1.4 1.6 1.8 2
"foo.dat"
"bar.dat"
Fig.3 Fig.4
5. gnuplot
でグラフを作成する(2)
次のデータの第1列と第3列と使ってグラフを描画することを考える.
10 2.5937424601000023e+00 1.2453936835904278e-01 100 2.7048138294215294e+00 1.3467999037515721e-02 1000 2.7169239322355985e+00 1.3578962234466196e-03 10000 2.7181459268248984e+00 1.3590163414667344e-04 100000 2.7182682371922948e+00 1.3591266750268005e-05 1000000 2.7182804690959363e+00 1.3593631087438496e-06 10000000 2.7182816941320103e+00 1.3432703482862962e-07 100000000 2.7182817983463599e+00 3.0112685234229275e-08 1000000000 2.7182820520118995e+00 2.2355285445030404e-07 10000000000 2.7182820532331595e+00 2.2477411443233564e-07
このためには,
gnuplot> plot "foo.dat" using 1:3 with lines
とする. すなわち, plot命令に using 1:3によって, データの第1列と第3列を使ういう指示を 与える.
6. gnuplot
で関数のグラフを作成する【三角関数のグラフの描画】 sin(x)のグラフを表示するには次のように入力する. (See Fig.5)
gnuplot> plot sin(x)
【対数グラフ上で e/x を描画】 (See. Fig.6)
gnuplot> set logscale
gnuplot> set xrange [1:1.0E+5]
gnuplot> plot exp(1.0)/x
ここでxrangeとは,描画する独立変数xの値の範囲を指定するコマンドであり,xrange [1:1.0E5]+
では1≤x≤1.0×105の範囲で描画することを指定している.
【対数グラフ上で e(1/x+ 0.0001x)を描画】 (See Fig.7)
gnuplot> set logscale
gnuplot> set xrange [1:1.0E+5]
gnuplot> plot exp(1.0)/x, 1.0E-4*exp(1.0)*x, exp(1.0)(1/x + 1.0E-4*x)
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
-10 -5 0 5 10
sin(x)
0.0001 0.001 0.01 0.1 1 10
1 10 100 1000 10000
exp(1.0)/x
Fig.5 Fig.6
1e-05 0.0001 0.001 0.01 0.1 1 10 100
1 10 100 1000 10000 100000
exp(1.0)/x 1.0E-4*exp(1.0)*x exp(1.0)*(1/x + 1.0E-4*x)
Fig.7
● その他
gnuplot
の便利な使い方などgnuplotを用いてグラフを作成するために毎回gnuplotのコマンドを入力するは非常にめんど
うである. これを楽にするために,あらかじめgnuplotのコマンド列を書いたファイルを用意して,
それをgnuplotへの入力とすることができる.
1. gnuplot
のスクリプトファイルの作成(たとえば)sample1.gpltというファイル名で以下のようにgnuplotのコマンド列を書いた ファイルを作成する.
set terminal postscript eps color set output "sample1.eps"
set logscale
set xrange[1:10E+10]
plot "sample1.dat" using 1:3 with lines
これは,データファイルsample.datの内容を,このファイルに書かれたコマンド列にしたがって
sample1.epsに出力する. (必要に応じて,データファイル名,出力ファイル名などを書き換えれ
ばよい)
このスクリプトファイルを利用するには,
gnuplot < sample1.gplt
として, redirectを利用して gnuplotに送り込めば良い.
2.
初期設定ファイルの作成以下の1行だけを書いたファイルを, ホームディレクトリ(ホームフォルダ)直下に.gnuplot として保存する. (ファイル名の先頭に“.” がついていることに注意)
set terminal aqua
これにより,特に指定しない限り,初期設定ではgnuplotはaqua形式でファイルを出力する.
3.
3次元グラッフィックスの描画gnuplotは3次元グラッフィックスも描画可能である. たとえば, [0,4π]×[0,4π]上でf(x, y) = cos(x)sin(y)のグラフを描画するには,
0.00e+00 0.00e+00 +0.000000e+00 0.00e+00 1.00e-01 +9.983342e-02 ....
0.00e+00 1.25e+01 -6.632190e-02
1.00e-01 0.00e+00 +0.000000e+00 ...
1.25e+01 1.25e+01 -6.617588e-02
という, (x, y, f(x, y))の形のデータを用意する. x座標値が変化するところで空行が入っているこ とに注意. (この空行が無いときちんと描画してくれない)
set terminal postscript eps color set output "3d_1.eps"
splot "3d.result" title "" with l
0 2 4
6 8
10 12 14 0 2
4 6
8 10
12 14 -1
-0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
set terminal postscript eps color set output "3d_2.eps"
set contour set nosurface set view 0,0
set cntrparam levels 10 unset key
splot "3d.result" title "" with l
0 2 4 6 8 10 12 14 0
2 4 6 8 10 12 14
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
set terminal postscript eps color set output "3d_3.eps"
set pm3d map
splot "3d.result" title ""
0 2 4 6 8 10 12 14
0 2 4 6 8 10 12 14
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
● 参考
URL
1. gnuplot公式ページ:http://www.gnuplot.info/
2. その他のgnuplotに関連する日本語ページで有益なのはいかにあげるもの.
(a) http://ayapin.film.s.dendai.ac.jp/~matuda/Gnuplot/gnuplot.html (b) http://t16web.lanl.gov/Kawano/gnuplot/