next up previous contents
: demo を見よう : gnuplot を使ってできる基本的なこと : グラフ描画ツールに最低限必要な機能   目次

コマンドとデータ

gnuplot の動作原理を知る上では「コマンド」と「データ」を 別けて考えると良いでしょう。 前の節では、ファイルに保存されているデータを plot というコマンドで呼び出し表示しました。 また、quit もコマンドで、gnuplot を終了しました。 このように gnuplot には幾つかのコマンドが準備されています。 前の節での例を省みると、プロットはされるものの、 端のデータは軸に重なってわかりにくい等の弊害があります。 このような場合、gnuplot に用意されたコマンドを使って、
gnuplot> set xrange [-1.:4.]
gnuplot> set yrange [-1.:12.]
gnuplot> set xzeroaxis
gnuplot> set yzeroaxis
gnuplot> plot "text_test01.dat"
としてやると、以前に比べると格段にわかりやすいプロットが得られるでしょう。 良く使われるコマンドは、表11)にまとめますので、 それを参照してください。

一方の「データ」は、基本的には前の節に出てきたファイルの中身 です。 ただし、gnuplot は自分でデータを発生させることもできます。 例えば次のようなこともできます。

> gnuplot
... (snip) ...
gnuplot> j12(x) = sqrt(2/pi/x)*( sin(x) )
gnuplot> j32(x) = sqrt(2/pi/x)*( sin(x)/x-cos(x) )
gnuplot> j52(x) = sqrt(2/pi/x)*( (3/x**2-1)*sin(x)-3/x*cos(x) )
gnuplot> j72(x) = sqrt(2/pi/x)*( (15/x**3-6/x)*sin(x)-(15/x**2-1)*cos(x) )
gnuplot> plot [0.:25.] j12(x), j32(x), j52(x), j72(x)
ここでは、関数を4個定義しています。 強いて言うなれば、この定義、つまり "=" がコマンドです。 定義された関数のほうはデータとなります。 最後のplot [0.:25.]というコマンドを使って、 これらのデータを表示させています。 結果は 図12のとおりになります。 このように gnuplot では良く使われる関数があらかじめ定義されており、 さらにそれらを組み合わせることによって、 内部データとして関数をつくることができます。 良く使われる関数についても後ろに一覧(表12)を示します。

図 12: 球ベッセル関数
\includegraphics[clip,keepaspectratio,width=0.8\textwidth]{gnuplot_fig/text_test02.eps}

先ほどの例の中では、5行にわたって、キーボード入力が強いられますが、 何度も繰り返して同様なことを行う場合には非常に効率がよくありません。 このような場合にはあらかじめ text_test02.gp という次のような ファイルを準備しておき、 99

#!/usr/local/bin/gnuplot
j12(x) = sqrt(2/pi/x)*( sin(x) )
j32(x) = sqrt(2/pi/x)*( sin(x)/x-cos(x) )
j52(x) = sqrt(2/pi/x)*( (3/x**2-1)*sin(x)-3/x*cos(x) )
j72(x) = sqrt(2/pi/x)*( (15/x**3-6/x)*sin(x)-(15/x**2-1)*cos(x) )
plot [0.:25.] j12(x), j32(x), j52(x), j72(x)
gnuplot のコマンドラインから、
gnuplot> load "text_test02.gp"
とすることによって同様の結果を得ることができます。 このように、gnuplot が理解できる複数のコマンドを一つのファイルに 保存しておき、 load というコマンドで呼び出すことができます。 このようなファイルのことを「コマンドファイル」と呼ぶことにします。

これに対して、前の節に説明されたデータを保存しているファイルを 「データファイル」と呼ぶことにし、分類して考えることにしましょう。

説明の中では、 コマンドファイルであることを示すファイルの拡張子を".gp"、 データファイルであることを示すファイルの拡張子を".dat"、 としています。