GNUPLOT使用法 (TGIFでの使用を考えて)

0.はじめに

0.1 プロットしたいデータとして,"data.txt"があるとします.
中身はこんな感じで.
第一列を横軸に,第二列以降を縦軸にグラフを描きます.


	0	0	0	0	0	0	0	0
	20	0.083	0.1	0.097	0.12	0.142	0.135	0.172
	40	0.102	0.205	0.335	0.785	0.935	1.085	1.253
	60	0.15	0.605	1.11	2.303	2.53	2.795	3.105
	80	0.315	1.61	2.983	5.262	5.568	5.972	6.49
	100	0.623	2.64	4.95	8.648	8.958	9.453	10.11
	120	1.143	3.547	6.785	13.663	13.9	14.5	15.37
	140	1.528	3.733	7.452	18.25	18.705	19.458	20.435
	160	1.658	3.67	7.427	21.83	24.827	26.003	27.145
	180	1.655	3.622	7.355	22.263	29.202	31.5	33.3
	200	1.655	3.622	7.358	20.47	31.743	36.775	41.115
	220	1.653	3.628	7.363	18.638	31.97	39.435	47.935
	240	1.653	3.64	7.375	17.79	32.015	40.912	54.95
	260	1.658	3.655	7.39	18.388	32.458	41.085	58.143
	280	1.658	3.66	7.392	19.935	33.458	40.998	58.842
	300	1.658	3.658	7.39	20.753	33.947	40.998	58.795
	320	1.658	3.658	7.39	20.615	33.81	41.075	58.965

0.2 gnuplotを起動します.



1.まず使ってみる

1.1何も考えずに次のように入力してください.
plot [0:600][0:70] 'data.txt' using 1:2 with line

グラフが表示されたと思います.簡単でしょ!
q
ボタンで終了します.

では今のコマンドの解説を.
plot
は,その名の通りグラフを描くというコマンドです.

[0:600]
は横軸の範囲です.省略可能です.

[0:70]
は縦軸の範囲です.これも省略可能です.

'data.txt'
はデータファイル名です.

using 1:2
は,描画するデータ列の指定です.一列目を横軸に,二列目を縦軸に指定しています.つまり,0,20,40,・・・を横軸に,0,0.083,0.102,・・・を縦軸に指定しているわけです.

with line
は,プロットしたデータを線で結ぶという意味です.

1.2では続いて3列目のデータを,重ねてプロットしてみましょう.
グラフ表示ウインドウを閉じてしまった場合は,1.1の要領でもう一度表示してください.
その上で,
replot 'data.txt' using 1:3 with line

グラフに,2本目の線が重ねて表示されたと思います.

では今のコマンドの解説を.(だいたい想像はつくでしょうが)
replot
は,表示中のグラフに重ねてもう一本描くというコマンドです.
”重ねて描画”するわけですから,軸の範囲は指定しません(できません).
第三列以降は,これを繰り返せばよいのです.

2.Tgif形式の出力

2.1_Tgif形式での出力
GNUPLOTで作成したグラフを保存したり,整形して論文に貼り付けたり・・・.
この場合,グラフをTgif形式で出力すれば,Tgif上でラベルを入力するとか,線の色を変更するとか,が楽に行えます.

Tgif形式で出力するには,gnuplot起動後,出力形式を変更します.
set terminal tgif

続いて,作成するTgif形式のファイル名を設定します..
set output "data.obj"

拡張子は".obj"にしておきます.
プログラマには気持ち悪いですが・・・.

後は,これまで同様,plotやreplotを繰り返せばよいわけです.
この時,画面にグラフは表示されません.

再び画面に表示(ファイルに出力しない)するように,設定を戻すには,次のコマンドを入力してください.
set terminal x11

3.少し便利に

3.1_問題設定
これで,大体のことはできるようになると思います.
しかし,この作業が一度なら結構ですが,何度も繰り返す必要があるとき,一括処理できた方が楽でしょ!?
そこで,データファイルのあるディレクトリで,・・・

3.2_次のような内容のテキストファイルを作成します.
ファイル名は何でもいいですが,”plot.batch”とでもしましょう.


	#!/usr/bin/gnuplot
	set nokey
	set size 0.4
	set size ratio 0.75
	#set ylabel "Position"
	set output "data.obj"
	plot [0:600][0:70]  'data.txt' using 1:2 with line
	replot  'data.txt' using 1:3 with line
	replot  'data.txt' using 1:4 with line 
	replot  'data.txt' using 1:5 with line 
	replot  'data.txt' using 1:6 with line 
	replot  'data.txt' using 1:7 with line 
	replot  'data.txt' using 1:8 with line
	pause -1


では,gnuplotを起動して,次のように入力してください.
load "plot.batch"

これまで一つずつ入力して実行したことが,まとめて実行できたでしょ!
これは便利でしょう!!!

またここでは,凡例を表示しないように設定したり,サイズの設定なども行っています.
言い忘れましたが,最後の"pause"を忘れると,グラフの表示は一瞬で終わってしまいます.

3.3_さらに
さらにこれには一つトリックがあります.
では,gnuplotを終了してください.
今いるディレクトリには,データファイルと"plot.batch"の両方がありますね?

"plot.batch"というファイルに,実行許可を施します.
chmod 744 plot.batch

それでは,次のように入力してください.
./plot.batch

gnuplotを起動せずに,グラフが表示されたと思います.
作成した"plot.batch"の一行目があるおかげで,この方法が使えます.
環境によってはgnuplotのパスが異なるので,上手くいかないときは"which gnuplot"等で確認してください.

4.その他

4.1_数式プロット
GNUPLOTは,数式を直接入力してグラフを作成できます.

例えば,次の数式を下に,横軸t,縦軸yでグラフを描いてみます.
y(t)=5*t*t+3*t+10

plot [t=0:100] 5*t*t+3*t+10