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関連のブログ記事

コメント

スポンサーリンク


このブログの人気の投稿

Ubuntu Softwareが起動しないのでいろいろと調べてみる(Ubuntu 20.04.1 LTS)

gnuplotでプロットなどの色をcolornameの指定で変更する

gnuplot : グラフにグリッド線を描く方法(set grid)

gnuplot : プロット画像のサイズ指定について(set sizeとの違い)

Pythonのformat()を使って1桁の16進数でも2桁で出力する方法