gnuplotを使ってeps形式でグラフ出力する
10年ぶりくらいにgnuplotを使ってみたら、すっかり忘れてしまっていた。というわけで、グラフをフィッティングしてepsファイル出力するメモを。
gnuplotのグラフをLaTeX向けに出力
LaTeXに貼るならば、EPSファイル形式で出力すると良い。epsファイルとは、PostScriptファイル(psファイル)の弟分(?)で、PostScriptをベースとして1枚画像などを扱うに適した形式である。
gnuplotでepsファイルを出力するには、set terminalコマンドでpostscript epsを指定する。以下ではcolor指定もしていて、ファイル名"sin.eps"として出力している。
gnuplot> set terminal postscript eps enhanced color gnuplot> set output 'sin.eps' gnuplot> plot sin(x)
gnuplotで関数のフィッティング
データ系列があるときに最小二乗法でfittingさせたいときは、gnuplotのfitコマンドを利用すると良い。
ここでは、以下のようなデータファイルがあるとする。なお、周知の通り、gnuplotではカンマ区切りではなくスペース区切りを用いる。
0 0 1 1.1 2 2.1 3 2.9 4 4.2 5 5.4 6 6.0 7 6.9 8 7.9 9 9.1 10 10.2
このデータ系列を、f(x)=a*x+bという一次関数にフィッティングさせることを考える。これにはまず関数f(x)を定義して、fitコマンドでデータファイルを指定すれば良い。
具体的には以下のようにする。
関数を定義する gnuplot> f(x)=a*x+b fitコマンドで係数a,bを求める gnuplot> fit f(x) "s1.dat" using 1:2 via a,b (省略) Final set of parameters Asymptotic Standard Error ======================= ========================== a = 1.00182 +/- 0.01562 (1.559%) b = 0.0636364 +/- 0.09239 (145.2%)
"Final set of parameters"が得られた係数a,bとなる。なおこの場合には、全てのデータの重みは1となっている。
近似式とデータを一緒に描く
近似式が得られたら、そのグラフと元データを合わせて描画したいのが普通だろう。plotコマンドは複数の対象を指定できるので、元のデータファイルと近似式の両方を指定して、重ねて描画してやれば良い。
set terminal postscript eps enhanced color set output 'exp.eps' set xlabel "length (mm)" set ylabel "Absorbance (a.u.)" f(x)=1.00182*x+0.0636364 plot "s1.dat" title "experimental data" with points pointtype 7, f(x) title "1.002x + 0.0636"
なおここで縦軸は吸光度を仮定したので、(a.u.)を指定している。吸光度のように測定系の比でしか議論できない数値は、任意単位(Arbitrary Unit)と呼ぶ。省略形はa.u.だが、他にarb. unitと書くこともある。