シェアする

  • このエントリーをはてなブックマークに追加

gnuplotでデータプロットからfitting ・再利用まで一通りやる

シェアする

  • このエントリーをはてなブックマークに追加
エネルギーの概念図

みんにちは!わろたんです。
今回はgnuplot でfitting した結果を再利用するときのやり方や注意点をまとめてみました。
特に初めてgnuplot を使う学生さんや社会人の方を対象に、
データプロットからfittingまで実際の使い方を一通り紹介していきます。
参考にしてみてください。

今回は以下のような流れで説明していきます。

gnuplot の使い方

gnuplot は言わずと知れた対話型のグラフプロットツールです。
プロットしたい関数やデータを指示して画面にグラフを表示します。

gnuplot の起動

コンソール画面を立ち上げて以下のコマンドを入力するとgnuplot が立ち上がります。(gnuplot と入力したあと、Enterキーを押してください)

gnuplot [Enter]

gnuplot が立ち上がると入力待機状態になります。ここで適当に

plot sin(x) [Enter]

とかうつと\({\rm sin}\left(x\right)\)のグラフが出てきます。

さて、今回は以下のようなデータがあったとしましょう。

このファイルをダウンロードして以下のコマンドをgnuplot に入力してみて下さい。

plot “Energy.txt” u 1:3 [Enter]
多分こんな感じのグラフが出てきたと思います

ちなみに画像は

set terminal png enhanced [Enter]
set output “foo.png” [Enter]
rep [Enter]

のようにするとpng 形式で画像を作れます。より詳しい説明はこちらの記事を参照してください。

ちょっと見づらいので凡例を消して\(x\)軸の範囲も調整しましょう;

unset key [Enter]
set xr [0:100] [Enter]
rep [Enter]

すると邪魔な凡例が消えて\(x\)軸の値もいい感じになったと思います。
次にこのデータを線形関数でフィッティングしていきます。

f(x) = a*x [Enter]
fit f(x) “Energy.txt” u 1:3 via a [Enter]

ここまで入力すると、なんか色々なfitting の結果が表示されますがいったん無視して

rep f(x) [Enter]

を入力します。そうするときれいに線形フィットされたグラフが出てくると思います。

軸ラベルは

set xlabel “Number of particles” [Enter]
set ylabel “Energy” [Enter]
rep [Enter]

としました。
ちなみに\(a=0.49…\)の部分がfitting をした結果の傾きです。

gnuplot のfitting 結果を再利用する

さて、ここでいったんgnuplot を閉じてしまうとこのfitting 結果はどこかへ消えてしまいます。fit.log というのが残りますが、これだけでは今やったfitting 結果を再現できません。
そこで以下のコマンドを実行し、直前のfitting 結果を保存しておきます。

save fit “Energy_linear.fit” [Enter]

拡張子はとりあえず.fitとしておきました。これでいったんgnuplot を閉じてもこの.fit ファイルを読み込めば、パラメータ\(a\)が読み込まれ再度fitting する必要はなくなりました。.fit ファイルを読み込むには

load “Energy_linear.fit [Enter]

とします。ただし注意したいのは、これだけでは関数\(f\left(x\right)\)が定義されておらず、こいつだけは再定義してやる必要があることです。

load “Energy_linear.fit [Enter]
f(x)=a*x [Enter]
plot “Energy.txt” u 1:3,f(x) [Enter]

これで先ほどのグラフが出てくるはずです。実は一連のコマンド群を一つのファイルにセーブして、それを読みこむという方法でも同じことができます。何度も同じコマンドを入力しなくて済むということです。これについては今回は記事が長くなってしまうので、次回に回したいと思います。

fitting 結果を再利用するときの注意点

読み込むのはパラメータだけなので関数形は再定義する必要がある

これは先ほども書きましたが、.fit ファイルを読み込んで読まれるのはパラメータの名前と値だけです。先ほどの例では\(a\)というパラメータがいくつかという情報は新たなターミナルでも保持されていましたが、具体的な関数形までは保持されていませんでした。なので、関数形は再度こちらで定義してやる必要があります

セーブできるのはsave コマンドの直前のfitting 結果だけ

これは地味に気を付けなければならない点です。例えば、先ほど\(f\left(x\right)=ax\)という関数でfit しましたが、その直後に\(g\left(x\right) = bx^{2}\)という関数でもfitting したとします。こんな感じに;

fit f(x) “Energy.txt” u 1:3 via a [Enter]
fit g(x) “Energy.txt” u 1:3 via b [Enter]
save fit “Energy_sq.fit” [Enter]

こうすると\(f\left(x\right)\)に関するfitting 結果は保存されず、保存されるのは\(g\left(x\right)\)のfitting 結果のみです。なので、もしやるならそれぞれのfitting 結果を別々のファイルに都度保存しておくとよいでしょう。

まとめ

いかがだったでしょうか。

今回はgnuplot の基本的な使い方からデータプロット・フィッティング・結果の再利用まで通しでやってみました。
今回の流れを一通りやることで、なんとなく使い方がつかめてきたのではないでしょうか。
今後のレポート作成等に生かしていただければ幸いです。

最後まで読んでいただきありがとうございました!!

他にも色々とgnuplotに関する記事を書いています。参考にしてみて下さい!

もっとこんなことを記事にしてほしいなどのご要望がありましたら、このページ上部のお問い合わせフォームまたは下部のコメント欄からご連絡いただくか、以下のメールアドレスでもお待ちしております。

tsunetthi(at)gmail.com

(at)の部分を@に変えてメールをお送りください。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする