100.3.5.7 条件フィルタ (if)


    plot ... if (<expression>)
    splot ... if (<expression>)

入力データの各行に対し、filter if 内の式 (expression) が評価され、そ の値が真 (0 以外) の場合にのみ、その行を受け付けます。using 指定子内 で有効な任意の関数、変数はこのフィルタの式内でも有効で、描画には使用し ない入力データ列も利用できます。

式 (expression) が偽 (0) と評価したデータ列は、それがファイル内に存在 しなかったものとして扱います (以下参照: missing (113.23.4))。これは、以前サポー トしていた、using 指定の中で行う論理テストによる手法より、可読性の高 い同等の方法を提供します。

古い書式 (まだ使えます):


    set datafile missing NaN
    plot FOO using (strcol(1) eq "ABC" ? $2 : NaN):3 with linespoints
    plot $DATA using 1:($2 < 999. ? $2 : NaN)

新しい書式:


    plot FOO using 2:3 with linespoints if (strcol(1) eq "ABC")
    plot $DATA using 1:2 if ($2 < 999.)

古い例と新しい例の両方とも、入力ファイル FOO の行で最初の列が ABC で ある行、$DATA の 2 列目が 999 より小さい行のみを選択します。

このフィルタは splot コマンドでも利用可能ですが、そちらはフィルタの式 が 0 (偽) を返す場合、その点を欠損データ (missing) ではなく未定義 (undefined) として扱う、というわずかな違いがあります。

竹野茂治@新潟工科大学
2024-12-02