gnuplotで一つのファイルにデータとプロットコマンドを含める方法(datablocks)
gnuplotで一つのファイルにデータとコマンド文を含める
gnuplotでデータファイルをプロットする場合、通常はデータファイルはデータファイルとして別個のファイルとして扱います。そしてそのデータファイルに対してコマンド処理をしてプロットします。またgnuplotではその型式だけでなく、データファイルとコマンド処理を一つのファイルにまとめてプロットするという使い方も出来ます。方法自体は2つあって
- 一つは「inline data」
- もう一つは「datablocks」
(ネット上の情報ではdatablocksという語がデータのまとまりと扱われているケースもあるようですが、gnuplotのドキュメントでは今回扱う意味になっています)
datablocksとinline data
ファイル内のデータはdatablocksの方が扱いやすくなっています。それと大きな違いとしてはコマンド文がinline dataの場合はデータ部分の前、datablocksではデータ部分の後に来ます。今回はこのうち、datablocksについて解説していきます。
簡単な例
datablocksでデータとコマンド文を書く場合、簡単には以下のような書き方になります。$data01 << EOD
1 3
2 5
3 1
4 10
5 3
7 1
9 10
11 8
15 3
EOD
plot $data01 w lp
これを"test01.gp"というファイルに書いて保存。プロットするときは
$ gnuplot -p test01.gp
とします。
解説すると"$data01"という変数にデータを格納して、コマンド文でその変数を扱うという型式になります。データが書かれた範囲は"EOD"で挟まれた部分となります(EODという語でなくともいいようですがアルファベットで始める必要があるかと)。
複数のデータ部分
データ部分は1つで無くとも以下のように複数記述して扱うということも出来ます。当然ですがデータを含める変数は別個のものを使います。$data01 << EOD
1 3
2 5
3 1
4 10
5 3
7 1
9 10
11 8
15 3
EOD
$ data02 << EOD
3 5
5 1
7 9
10 1
13 9
17 3
EOD
plot $data01 w lp, $data02 w lp
実際に使うかどうかはファイル管理の方針によるのかなと
datablocksの型式は書き方自体はすんなり理解出来るとは思いますが、実際にこういった型式でファイルを書くかというのは状況によるかなと思います。例えばデータファイルとコマンドファイルを別個に保存しておくと、常にそれをワンセットで保管しておく必要があります。それをdatablocksの型式で1つにまとめておけばファイルの扱いとしては管理が楽になりそうです。ただ「データファイルはデータファイル」という管理方針ではdatablocksの型式はあまり向いてないかと。まぁそのへんは個々の事情に応じて検討してみてください。
データファイルでなくとも使える
あとdatablocksの型式はファイルでなくとも、インラインモードつまりコマンドラインからのgnuplotの実行でも使うことが出来ます。その他、gnuplot関連のブログ記事
コメント
コメントを投稿