http://www3.u-toyama.ac.jp/moriwaki/gnuplot.html
gnuplotの利用
gnuplotはデータフィッティングの機能をもつグラフ作成ソフトで, 様々な関数を利用することが出来る.
- gnuplotのインストール
各自のpcで利用する場合には, gnuplot homepegeの中程「Gnuplot #.#(current stable)」(#は数値)の直ぐ下のリンクなどからインストールファイルをダウンロードしインストールしよう(Windowsなら[gp###-win64-mingw.exe]).
- 準備
下記ファイルをダウンロードして適当なフォルダ(ここでは, 'c:\user\gnuplot')に保存する
dataファイル (ファイル名 11.dat)
dataファイル (ファイル名 21.dat)
dataファイル (ファイル名 31.dat)
dataファイル (ファイル名 41.dat)
gnuplotによる最適化
- gnuplotを起動する. gnuplotのウィンドウにコマンドプロンプト「gnuplot>」が出ている. これに続けて2.以下を実行することでfittingやグラフの作成ができる.
その前に, 次の操作により上記の適当なフォルダ('c:\user\gnuplot')にカレントディレクトリを移動する:
- 現在のディレクトリの表示: pwd
- ディレクトリの移動: cd 'c:\user\gnuplot'
- フィットするデータをグラフに表示
gnuplot> plot '11.dat'
新たなウィンドウが開きグラフが表示される.
- フィットする関数を入力する(定義)
gnuplot> f(x)= a*x+b
(a, b はfitting 係数. 様々な関数が利用できるので, netで確認しよう. xの2乗はx**2と書く)
- 関数f(x)をデータにフィットする
gnuplot> fit f(x) '11.dat' via a,b
via の後にはfittingで決める係数を記入する.
何回かの繰り返しの後係数が誤差とともに表示される.
- データとフィットされた関数を図示
gruplot> plot f(x), '11.dat'
うまく計算できないときのヒント
-
計算が中断して,
「 undefined value during function evaluation 」
などと表示される場合がある. フィッティング係数(a, b, ...等)の初期値が良くないことが原因となっていることがある. フィッティング係数の値は,
gnuplot> show all
により確認できる. 出来るだけよい初期値を与えるためには, データ点とフィッティング関数をよく見比べながら, 係数の初期値を決めてやる必要がある. 例えば,
gnuplot> a=4; b=5;
等のように, 具体的に数値を代入してやり
gnuplot> plot f(x), 'データファイル'
として, データと関数を同時に描かせながら, 初期値を出来るだけよい値にしてやるとうまくいく.
-
グラフの表示範囲が適切でない
グラフ上で右クリックしたままマウスを移動することにより、表示部分を変更ができる。しかし、うまくやらないと画面からグラフが見えなくなってしまう。
そのような場合には、
set xrange [0:10] ( 0<x<10の例)
set autoscale (範囲を自動で決める)
コマンドを使うとよい。
-
軸のラベル
set xlabel 't (s)'
など。
gpファイルの利用
- データファイル('41.dat')があるディレクトリに「fit.gp」というテキストファイルを作り, テキストエディタで下記を打ち込む
filename='41.dat' #読み込むファイルの名前
func(x)=a*exp(-b*(x-c)**2)+d #関数の定義
a=20;b=1;c=4.5;d=3 #初期値
fit func(x) filename via a,b,c,d #フィットの実行
set xlabel '{/:Italic x}' #横軸のラベル
set ylabel '{/:Italic y}' #縦軸のラベル
plot filename notitle, func(x) notitle #グラフ表示
pause -1 "press [Enter] key to quit"
- 上記で"#"の後はコメントである
- コマンドラインに下記を入力して[enter key]
gnuplot> load 'fit.gp'
- 結果を確認する(「fit.log」を確認)
- Tips
- gnuplotウィンドウの文字の大きさは, [ヘルプ]->[オプション]->choose fontで変更できる
- x, y軸のラベルの記述例: フォント Times New Roman, 大きさ 16pt
gnuplot> set xlabel font 'Times New Roman, 16'
gnuplot> set ylabel font 'Times New Roman, 16'
gnuplot> set xlabel 'X'
gnuplot> set ylabel 'Y'
- フォントをイタリック
gnuplot> set xlabel '{/Italic X}'
- フォントをギリシャ文字
gnuplot> set xlabel '{/Symbol a}'
- emfファイルに保存(Wordなどで読み込める) ファイル名 11.emf
gnuplot> set term emf
gnuplot> set out '11.emf'
gnuplot> plot '11.dat'
gnuplot> set term win
- データの区切りがカンマ","のデータファイルを読み込む場合の設定
set datafile separator ","
- データファイルの3列目をx, 2列目をyとしてplot
plot filename using 3:2
- データファイルの10行目から100行目をplot
plot filename every::10::100
- プロット結果をファイルに保存する
set terminal ________ # ____は postscript eps, pngなど
set output "41.***" # ***はファイルの形式 eps pngなど
- Windowsの環境変数PATHにgnuplot.exeのディレクトリを登録する(PATHを通す)と, テキストエディタのtoolなどの機能を使って, gpファイルをgnuplotで実行させることができる.
- 精度が出ない場合がある
大きな数と大きな数(桁数が多い)の差を取る場合には,精度が出なくなる場合がある. 定数部分を適当に用意して,変数の桁数を下げるとうまくいく場合もある.
- 繰り返し操作
do for [i=1:10]{<繰り返し内容>} # i=1から10まで<繰り返し内容>を実行