http://www3.u-toyama.ac.jp/moriwaki/gnuplot_ubuntu.html
gnuplot(ubuntu)
準備
利用するファイルの保存について, (A)端末室利用(VirtualBox), (B)それ以外のubuntuがインストールされているwindows利用の場合について説明します.
- (A) 端末室利用(VirtualBox)
- ファイルの用意: デスクトップに新しいフォルダーを作り[gnuplot]に名前を変更し, 以下のファイルをダウンロードして,そのフォルダーに保存する.
dataファイル (ファイル名 11.dat)
dataファイル (ファイル名 21.dat)
dataファイル (ファイル名 31.dat)
dataファイル (ファイル名 41.dat)
- windowsのアプリ「WinSCP」を起動する
- 左の窓の[wwwst.ems.u-toyama.ac.jp]を選択し, [ログイン]ボタンを押す
- ユーザー名, pwを入力する(windowsのログインと同じ)
- バーに/home/g4/ems/*******(ユーザー名)/と書いてある窓の下に, デスクトップの[gnuplot]フォルダーをドロップする. (これで, ubuntuからファイルを扱えるようになる)
- (B) それ以外
- エクスローラーのパスに「\\wsl$」を入力する. ネットワードライブに「Ubuntu」フォルダーが出てくる.
- ここから辿り, Ubuntu/home/user-name のフォルダーへ移動
- ここにgnuplotフォルダーを作り, 以下のファイルをコピーする
dataファイル (ファイル名 11.dat)
dataファイル (ファイル名 21.dat)
dataファイル (ファイル名 31.dat)
dataファイル (ファイル名 41.dat)
UbuntuでのGnuplot起動
ubuntuでのgnuplotの起動について, (A)端末室利用, (B)それ以外のubuntuがインストールされているwindows利用の場合について説明します.
- (A) 端末室利用(VirtualBox)
- windowsのアプリ「Ubuntu」を起動する.
- [起動]ボタンを押す.
- ユーザー名, pwを入力する(windowsのログインと同じ).
- ubuntuウィンドウの左コラム-ファイルをクリックすると, 上で転送した[gnulot]フォルダを確認できる.
- ubuntuウィンドウの左コラム-端末をクリックする. 端末(windowsのコマンドプロンプトと似ている)が起動する. 1行目に[****(ユーザー名)***@ubuntu-wm:~$]と表示される.
$ [ls]を入力し[Enter]keyを押す(この操作を今後[ls]を実行と記す)-->カレントディレクトリのファイルが表示される.
$ [CD gnuplot]を実行-->カレントディレクトリが, [gnuplot]フォルダに移動する.
$ [ls]を実行.-->[gnuplot]フォルダ内の, [11.dat]などのファイルがあることが確認できる.
$ [gnuplot]を実行.-->gnuplotが起動する.
- (B) それ以外
- windowsのアプリ「Ubuntu」を起動する. windowsのコマンドプロンプトに似たウィンドウが開く. 1行目に user-name@******: $ と表示される.
- このウインドウに「pwd」と入力し「Enter」keyをおすと, 現在のディレクトリが表示される. /home/user-name/ (今後, この操作を[pwd]を実行と書くことにする)
- ディレクトリの移動: [cd "gnuplot"]を実行
- ディレクトリ内のファイルの確認: [ls]を実行. 上でコピーしたファイルが全てあるはず.
- gnuplotを起動: [gnuplot]を実行.
gnuplotによる最適化
gnuplotはデータフィッティングの機能をもつグラフ作成ソフトで様々な関数を利用することが出来る.
- Ubuntuのウィンドウで [gnuplot]を実行. gnuplotが起動して 「gnuplot>」が出ている. これに続けて以下のコマンドを実行することでfittingやグラフの作成ができる.
- フィットするデータをグラフに表示
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ファイルの利用
- windowsのエクスプローラーでデータファイル('41.dat')があるディレクトリに「fit.gp」というテキストファイルを作り, テキストエディタで下記を打ち込む. ((A) 端末室利用 の場合には, WinSCPを利用して, ファイルをubuntuに転送して下さい)
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"
- 上記で"#"の後はコメントである
- Ubuntuのコマンドラインに下記を入力して[enter key]
gnuplot> load 'fit.gp'
- 結果を確認する(「fit.log」を確認)
Tips
- データの区切りがカンマ","のデータファイルを読み込む場合の設定
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まで<繰り返し内容>を実行