3

gnuplot でプロットしたいデータファイルがあります。ただし、y 軸については、gnuplot が特定の値を下回るすべての点を無視するようにしたいと考えています。特にデータファイルが巨大な場合、これを行う簡単な方法はありますか?

4

1 に答える 1

9

外部ツールに頼らずに (少なくとも) 2 つの方法があります。

IGNORE_BELOW=50
set yrange [IGNORE_BELOW:]  #ignore points below 50, but your yrange will start at 50.

2 番目の方法は、using ステートメントで gnuplot 三項演算子を使用することです。ファイル IO を実行するとき、gnuplot は未定義の値 (1/0) を黙って無視することに注意してください。

IGNORE_BELOW=50
filter(x)=(x>=IGNORE_BELOW)?(x):(1/0)
plot 'mydatafile.dat' u 1:(filter($2))

これは、スペースで区切られたデータファイルがあり、最初の列を x 軸に、2 番目の列を y 軸に (典型的な gnuplot のやり方で) プロットしたいと仮定しています。

最初の方法は最も簡単ですが、プロットしたい範囲内の点を切り取ることができません。2 番目の方法は少し醜いですが、より一般的で、gnuplot データのあらゆる種類の入力フィルターを作成するために使用できます。

もちろん、gnuplot がパイプをサポートしていて、外部ツールを使用してフィルターを作成したい場合は、それも可能です。データファイルを入力として受け入れ、変更されたデータを標準出力に書き込むだけです。次にgnuplotで:

plot "< mytool.ext mydatafile" ...

この問題についてawkは、優れたツールになります。

于 2012-06-11T13:08:38.067 に答える