web-dev-qa-db-ja.com

gnuplot条件付きプロット:col C == xの場合、col A:col Bをプロット

Gnuplotでこれを行うには:

plot "test.csv" using 1:2 if value_in_column_3 == 80.0

列3 == 80.0の行のみを選択し、他のすべての行を無視する必要があります(他の行に0をプロットするのではなく、単に無視します)

前もって感謝します。

28
jitihsk

次のデータセット(1.dat)、

1 0.8 0
2 0.6 0
3 0.9 1
4 1.1 0
5 0.7 0
6 0.6 1

ここでは、3番目の列がゼロに等しい場合にのみ最初の2つの列をプロットします。次に、これを試すことができます:

plot '1.dat' using 1:($3==0?$2:1/0)

(Gnuplotメーリングリストで markjoe にクレジットしてください。)

36
chl

上記のchlが述べているように、gnuplotでこれを行う唯一の方法はかなりハックです:gnuplotのterniary?:演算子を使用して、データセットから除外したいポイントで数値エラーを生成する必要があります。

私はプロジェクトの著者であるため、ここで偏っているかもしれませんが、Pyxplotを見てみたいと思うかもしれません http://www.pyxplot.org.uk (また、無料でオープンソースです) 、このようなハックな構文に少しうんざりしていたgnuplotユーザーのグループによって書かれました。

その構文はgnuplotに非常に似ていますが、拡張機能があります。必要に応じて、plotコマンドで「選択基準」を指定できます。ポイントは、Trueをテストする場合にのみ含まれます。詳細については、 http://pyxplot.org.uk/current/doc/html/sec-select_modifier.html を参照してください。

5
Dominic Ford

別のハックは、awkのようなシェルコマンドを使用することです。

plot "< awk '$3==80.0 { print $1, $2 }' test.csv" using 1:2
5
user2817215