web-dev-qa-db-ja.com

それらの間で数学演算を実行した後、2つのファイルからデータをプロットする

私が持っています

FileSFC1:特定のデータが含まれています
FileSFC2:その他のデータが含まれています

ここで、FileSFC1の2番目の列をFileSFC2の2番目の列で分割し、この結果をプロットする必要があります。だから何かの形:

plot ( FileSFC1 using 1:1 / FileSFC2 using 1:1 ) * 100

したがって、基本的に、プロットは2つのファイルの列のパーセンテージになります。助けてください。

12
Bilal Hameed

Gnuplotは、同じ「ファイル」またはデータストリームからのデータの列のみを操作できます。できることは、plot '< bash command'構造を使用することです。 plotへの引数が<で始まる場合、引数の残りの部分はbashコマンドとして解釈され、そのコマンドの出力がプロットされます。そう:

plot '< paste FileSFC1 FileSFC2' u (100*$2/$4)

これは、両方のファイルに2つの列があり、各ファイルの2番目の列のパーセンテージをプロットすることを前提としています。データ列を操作するための構文は、usingの引数を括弧で囲み、列番号の前にドル記号を付けることです。

17
andyras

アンディラスの答えはあなたが探しているものです。

この構成でそれを追加したかったので、bashのプロセス置換を使用することはできません<(、これは残念です。ほとんどの場合、追加のストリーム歳差運動(行のgrepまたは削除など)を実行する必要があるためです。

このためには、この質問への答えが必要です Gnuplot and Bash process-substitution 、これをここで簡単に例示します:

# Will concatenante FileSFC1 with the first 200 lines of FileSFC2
plot '< exec bash -c "paste <(cat FileSFC1) <(head -n 200 FileSFC2)"' u (100*$2/$4)
3
Bertrand Caron