gnuplotで他のコマンドからの出力結果をプロットする方法(Piped-data)

 gnuplotでデータファイルをプロットするとき、データファイルそのままではなく何かしらの処理をしてからプロットするということはよくあります。その場合、前もって他のソフトやコマンドを用いてデータファイルに何かしらの処理をし、別のデータファイルとして保存。それをgnuplotでプロットすることになるでしょう。
それでもいいのですが、データ処理とプロットをひとまとめに出来れば処理工程を減らすことが出来ます。

そしてgnuplotには「Piped-data」という、他のコマンドの出力結果をデータファイルかのように扱える機能があります。これによりデータ処理とプロットをひとまとめにすることが出来ます。


Piped-dataを使う時の書式

Piped-dataを用いる時の書式は「<」記号を用いて、以下のようになります。
gnuplot> plot "< awk '{print $1, $2+$3}' test.dat" w l
解説すると、これはtest.datというデータファイルをawkコマンドで処理したものをプロットしています。awkコマンドでは1列目はそのままで、2列目と3列目のデータを加算したものを2列目として出力しています。

sedコマンドを使った例

次に以下のようなデータファイル(test02.dat)を例にPiped-dataの使い方を考えてみます。

#a b c
1 3 10
2 4 20
3 1 15
4 9 22
5 2 19
6 3 11


gnuplotでは以下のようにusingで列ラベルを指定してプロットすることが出来ます。
gnuplot> plot 'test02.dat' using "a":"b" w l
しかし、test02.datの列ラベルは「#」でコメントアウトされているので、上のコマンドでプロットしようとしてもエラーとなります。その場合、以下のようにsedコマンドで「#」を削除すれば列ラベルで指定したプロットが出来るようになります。
gnuplot> plot '< sed "s/#//" test02.dat' using "a":"b" w l

最後に

Piped-dataで使えるのはコマンドラインでのコマンド処理に限られますが、データファイルの簡単な処理や整形などいろいろ応用が効くでしょう。


その他、gnuplot関連のブログ記事

コメント

スポンサーリンク


このブログの人気の投稿

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

catコマンドの出力を行番号付きにするためのコマンドラインオプション(-n, -b)

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

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

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