複数のデータファイルのある列の差分表示
Q:複数のデータファイルのある列の差分を表示したいのですが?
A:gnuplot のパイプ入力と行単位でファイルを結合するコマンド'paste'を使いま
しょう.
全く同じ構造を持つ(一般に第1列が全く同じデータであるとしましょう)2つの
データファイル da.dat, db.dat
da.dat db.dat
------- -------
x1 ya1 x1 yb1
x2 ya2 x2 yb2
x3 ya3 x3 yb3
....
のそれぞれの第2列データの差分を表示するには,ファイルを行単位で結合
したデータファイル dd.dat
dd.dat
-----------------
x1 ya1 x1 yb1
x2 ya2 x2 yb2
x3 ya3 x3 yb3
....
を作成して(ちょっと強引ですか? どうせなら第3列目は除くのが普通の感覚で
しょうが,'paste' を利用する方法とのつながりを考慮してこうしてます),
gnuplot> plot "dd.dat" using 1:($2-$4)
と呼び出せば良いのですが,新しいデータファイル dd.dat を予め作成するのが
煩わしいかも知れません.そんな貴方には gnuplot のパイプ入力
が役立ちます.すなわち,
シェルを起動してコマン
ドの標準出力を受け取る事ができるのです.あとは行単位の結合を
するコマンド 'paste' を利用すれば準備万端,
gnuplot> plot "< paste da.dat db.dat" using 1:($2-$4)
と解決できます.なお,元データも表示するなら
gnuplot> plot "< paste da.dat db.dat" using 1:($2-$4), \
"" using 1:2, "" using 1:4
とします.