2つのデータセットをgnuplotに分割するにはどうすればいいですか?


0

gnuplotを使用していますが、2つの別々のデータファイルがあり、データセット1のx軸のすべての値を、データセット2のx軸のすべての値で除算したいと思います。この??

gnuplot内からこれを実行できますか?

回答:


0

あなたはgnuplotからこれを行うことができます、あなたのデータを外部的に前処理する方が簡単かもしれませんが。

実際、これはデータを受け取り、結合されたデータを標準出力に書き込むスクリプトを使用してデータを外部で前処理するのと非常によく似ています。 gnuplotでパイプを使うための構文は、

plot " < program arguments"

私は通常そのような目的のためにAWKを使います。あなたの問題を解決するために、前処理スクリプトはどういうわけか2つのデータセットを内部で結合して、それから望ましい値を計算しなければなりません。 AWKでは、次のようにします。

{
 if(secondfile)
   print $1, $2, values[$1,$2]/$3 
 else
   values[$1,$2]=$3
}
ENDFILE{secondfile=true}

最初のファイルの値はvalues配列に格納されます(secondfileはfalseです)。 ENDFILEパターンは、任意の(ここでは最初の)ファイルの最後に実行され、座標xとy、および分割された値( "x y value"列のデータ形式があると仮定)を印刷するようにメインルールの動作を切り替えます。 ENDFILEフックは現在のGAWK 4.0でサポートされています。

最後のplotコマンドは次のようになります。

plot "< awk '{if(secondfile) print $1, $2, values[$1,$2]/$3 ; else values[$1,$2]=$3} ENDFILE{secondfile=true}' file1 file2" using 1:2:3

(数量をどのように計算するかについては十分に理解していませんでしたが、同様の方法でそれを実行できます)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.