Gnuplot

●説明

gnuplotは、xgraphのような、 ファイルに入ったデータをプロットするだけではなく、 y=0.3*x*x+xの様な任意の関数を記述することができます。 また、対話型インタフェースを用いてグラフをプロットするだけではなく、 命令を記述したファイルを利用してバッチ的な処理も可能です。 様々なフロントエンドプログラムも存在し、 これらを用いることでGUIでの操作が可能にです。 また、様々な統計処理や数値処理ソフトウエアの グラフ表示バックエンドとしても用いられています。

さらに、関数の当てはめ(fitting)を行うこともできますので、 理論式との比較などの実験データの整理にもってこいです。 ここでは、簡単な使い方しか説明しませんが、 helpコマンドを利用することで、 多彩な機能を見ることができます。

●インストール

gnuplotをパッケージやportからインストールします。 ports/math/gnuplot+という拡張がほどこされた バージョンがあるので、こちらを利用してもいいでしょう。 ただし後者は、利用にはhacker条項による制限がありますので注意してください。

●使用方法

●●はじめかた、おわりかた

gnuplotを立ち上げるにはコマンドプロンプトで、 次のように入力します。 この場合、gnuplotは対話モードに入り、 コマンドを順に入力していくことになります。 スクリプトを書いて、自動で作業を行うことも可能ですが、 今回はこれに付いては触れません。

	----------------------------------------------------------------------
	$ gnuplot

        	G N U P L O T
        	Version 3.7 patchlevel 2
        	last modified Sat Jan 19 15:23:37 GMT 2002
        	System: FreeBSD 5.0-RELEASE-p5

        	Copyright(C) 1986 - 1993, 1998 - 2002
        	Thomas Williams, Colin Kelley and many others

        	Type `help` to access the on-line reference manual
        	The gnuplot FAQ is available from
        	http://www.gnuplot.info/gnuplot-faq.html

	        Send comments and requests for help to <info-gnuplot@dartmouth.edu>
	        Send bugs, suggestions and mods to <bug-gnuplot@dartmouth.edu>

		gnuplot> 
	----------------------------------------------------------------------
      

最後の "gnuplot>"がgnuplotへのコマンドプロンプトです。

終了するためにはコマンドプロンプトで"exit" もしくは"quit"と入力します。

	----------------------------------------------------------------------
	gnuplot> quit(またはexit)
	$
	----------------------------------------------------------------------
      

●●グラフを描く

●●●データの表示

グラフを書くためには"plot"コマンドを利用します。 例えば、図1weight.dat というデータを描画するためには以下のようにします(図2)。

	    gnuplot> plot "weight.dat"
	  

図 1. 例題として用いるデータ(weight.dat)

--------------------------------------------------
44 75.800000
42 76.000000
40 76.800000
38 76.000000
36 75.400000
34 75.800000
33 76.800000
32 75.200000
31 75.600000
28 75.600000
27 75.800000
26 75.600000
24 75.600000
22 76.000000
21 75.200000
19 75.200000
18 75.600000
17 75.600000
16 75.200000
14 74.200000
12 76.000000
9 76.000000
8 76.200000
6 77.200000
1 75.600000
--------------------------------------------------
	  

図 2. 最初のグラフ

このままでは、点だけの表示なので見にくいですね。 点と点の間に線を引くには以下のようにします(図3)。

	    --------------------------------------------------
	    gnuplot> plot "weight.dat" with line
	    --------------------------------------------------
	  

図 3. 線を引いたグラフ

他にも、棒グラフなどのさまざまなグラフを記述することができますが、 ここではデータの表示はこれぐらいにしておきます。

●●●関数の表示

関数は任意の関数を記述することができます。 例えば、sin(x)等を表示することも可能です。 では見てみましょう(図4)。

	    --------------------------------------------------
	    gnuplot> plot sin(x)
	    --------------------------------------------------
	  

図 4. 関数のグラフ

関数は自分で定義することも可能です。 図5以下の例を見て下さい。

	    --------------------------------------------------
	    gnuplot> f(x)=x**3+2*x**2+3*x+5
	    gnuplot> plot f(x)
	    --------------------------------------------------
	  

図 5. 自分で定義した関数のグラフ

●●印刷用の出力を作成する

一般にプリントアウトするためには、 Postscriptと呼ばれる形式を利用して出力することになるでしょう [1]gnuplotでは、 デフォルトの設定ではXの画面にグラフを出力するようになっていますが、 "set term"コマンドを利用することで、 出力する先を変更することができます。

さらに、出力をファイルに変更するための"set output" コマンドを併用することで、望みのファイルにグラフを出力することができます。

	  ----------------------------------------------------------------------
	  gnuplot> set term postscript
	  Terminal type set to 'postscript'
	  Options are 'landscape noenhanced monochrome dashed defaultplex "Helvetica-Ryumin" 14'
	  gnuplot> set output "weight.ps"
	  gnuplot> plot x**2+x
	  ----------------------------------------------------------------------
	

出力は画面に出されず、ファイルに出されています。 gnuplotを終了させて、 lsweight.psが存在することを確認し、 ghostscriptなどで出力イメージを見てください。

●●関数の当てはめ(fitting)

現在の版のgnuplotには、 強力な関数の当てはめ機能が用意されています。 これを利用することで、実験結果から妥当な実験式を導出することも 可能となります。

関数の当てはめ機能の利用の手順は以下のようになります。

  1. 当てはめたい関数を定義してやります。

    この時、一般の関数とは違い、 未定変数を用意し、この値を変更することで、 当てはめを実現します。

  2. fitコマンドをつかって、未定の変数を推定します。

  3. これで、未定部分は決定されますので、普通に関数としてplotします。

実際にweight.datで2次関数の当てはめをおこなうと以下のようになります(図6)。

	  -----------------------------------------------------------
	  gnuplot> f(x)=a*x**2+b*x+c(関数を定義)
	  gnuplot> fit f(x) "weight.dat" via a,b,c(a,b,cを未定係数と考えて当てはめをおこなう)
	  (ここにいろいろ表示されます)
	  gnuplot> plot f(x),"weight.dat"
	  -----------------------------------------------------------
	

図 6. fittingを行ったグラフ

●参考資料

注意

[1]

gnuplotはTgifやLaTeXを含む、 様々な出力フォーマットに対応しています。 この場合、Postscriptでの出力はそちらのアプリケーションに 任すことになるでしょう。