gnuplotの使い方

数値データをグラフ化するのに有用なソフトとして、 gnuplot を紹介する。

1 準備と gnuplot の起動

まず PC から、 Astec-X を起動し、ワークステーションに入る。「利用の手引」 8 章 6 節を参照。

次に gnuplot を起動する。

  ah% gnuplot

すると、

G N U P L O T
unix version ...

といったメッセージの後、プロンプトが ah% から

gnuplot>

にかわる。

2 データファイル

１列目 x、２列目 y、３列目 z、…のようにデータを並べておく。また、 #で始まる行はコメント行として無視される。たとえば、

# x    y     dy/dx
0.00  0.01  0.10e+01
0.47  0.52  0.21e+00
1.00  0.61  0.86e-01

のようなデータをファイル datafile として保存しておく。 gnuplot で

    gnuplot> plot'datafile'

とすると、１列目を x 座標、２列目を y 座標としてグラフが描かれる。

3 基本的なコマンド

3.1 plot

plot でデータをプロットする。複数のデータを重ねて表示するには

gnuplot> plot'datafile1','datafile2',⋯ のように, で区切る。または replot を用いる。

    gnuplot> plot'datafile1'
    gnuplot> replot'datafile2'

ファイル名'datafile' の後に次のようなオプションをつけることができる。

   • using l_{x}:l_{y}

l_{x} 列目を x、 l_{y} 列目を y としてプロットする。

   • title'title'

各データに表題 title をつける。

   • with lines

データ点を線で結ぶ。他に linespoints、 dots などがある。

他にも spline 補間など多くの機能が備わっている。

3.2 set

set により表題・表示する範囲などの設定を行なうことができる。

   • set title'title'

グラフに表題 title をつける。

   • set xlabel'label'

x 軸に見出し label をつける。 y 軸の場合は set ylabel を使う。

これらは plot する前に行なう。 plot した後で設定を行なった場合は

    gnuplot> replot
で表示し直す。他には set xrange、 set label、 set grid などがある。

3.3 help

help コマンドにより、コマンド command の説明を見ることができる。

    gnuplot> help command

コマンドの詳しい説明とより高度な使用法については help を参照。

4 関数

sin, cos などの関数も同様にプロットすることができる。

    gnuplot> plot sin(x)

ただし'' でくくらない。四則演算+,-,*,/や巾乗**など、また円周率 pi といった定数も使える。たとえば\frac{1}{\sqrt{π}} exp(−x^{2}) をプロットするには

    gnuplot> plot exp(-x**2)/sqrt(pi)

とする。

5 グラフの印刷

グラフを印刷するにはポストスクリプト形式で出力する。

    gnuplot> set terminal postscript
    gnuplot> set output'filename.ps'
    gnuplot> replot

とすると、これまで画面に出力していた結果をポストスクリプト形式でファイル filename.ps に出力することがでる。

wind% lp -d printername filename.ps により、プリンター printername で印刷することができる。

6 gnuplot の終了

gnuplot を終了するコマンドは quit、 exit。

7 その他

ほとんどのコマンド・オプション、例えば with lines は w l のように短縮形を用いることができる。詳しくはマニュアルまたは help を参照。

8 例

Euler 法による\frac{d^{2}}{dx^{2}} y = −y, y(0) = 0, \frac{d}{dx}y(0) = 1 の数値解を例にとる。まずプログラムを

...
open(10,file='euler.dat')
write(10,200) '# x, y, z'
...
do i=1,N
...
write(10,210) x,y,z
end do
200  format(a)
...

としてデータファイル（ここでは euler.dat とした）にデータを書き出す。 gnuplot を起動して

gnuplot> set title'd^2y/dx^2=-y'
gnuplot> set xlabel'x'
gnuplot> set ylabel'y(x)'
gnuplot> plot'euler.dat' title"Euler's method",sin(x)

とすると、図のようなグラフが現れる。