100.20.4 Set datafile missing

書式:
     set datafile missing "<string>"
     set datafile missing NaN
     show datafile missing
     unset datafile

コマンド set datafile missing は、入力データファイル中で欠損データを 記述する特別な文字列があることを gnuplot に指示します。missing に 関するデフォルト値 (文字) はありません。gnuplot は「欠損データ」と「無 効な値」(例えば "NaN" や 1/0) を区別します。例えば、連続するデータ点に 対するグラフの折れ線描画は、無効な値によってそこで切れますが、欠損デー タの場合はそうではありません。

数値が期待される場面で数値ではない文字が現れた場合は、それが missing で指定する文字列にマッチする場合を除いて、通常欠損データではなく、無効 な値として解釈します。

逆に、set datafile missing NaN とすると、数式やデータ中の数値ではな い値 (NaN) はすべて欠損データとして扱います。

以下の例で、gnuplot バージョン 4 とバージョン 5 での違いを示します。

Image figure_missing
例:
     set style data linespoints
     plot '-' title "(a)"
        1 10
        2 20
        3 ?
        4 40
        5 50
        e
     set datafile missing "?"
     plot '-' title "(b)"
        1 10
        2 20
        3 ?
        4 40
        5 50
        e
     plot '-' using 1:2 title "(c)"
        1 10
        2 20
        3 NaN
        4 40
        5 50
        e
     plot '-' using 1:($2) title "(d)"
        1 10
        2 20
        3 NaN
        4 40
        5 50
        e

(a) のグラフは、3 行目には有効な値がひとつしかないため、gnuplot 4 と gnuplot 5 で違いがあります。バージョン 4 では、そこに 1 行に 1 つしか データがなかった場合の規則を適用し、行番号を "x" に、データを "y" と見 なし、誤ってその点を (2,3) に描画していました。

文字 '?' が欠損データを意味するものとして指定されている (b) では、古い 版の gnuplot でも新しい版でも同じデータを正しく処理します。

(c), (d) のグラフに見られるように、古い gnuplot では NaN を using の指 定の仕方によって異なった処理をしていました。現在は、gnuplot は入力列と して N と指定されていても ($N) と指定されていても NaN に対しては同じ処 理を行います。以下のデモも参照してください。 imageNaN デモ。

同様に、plot コマンドで using Nusing ($N)using (func($N)) の いずれを使う場合でも、gnuplot 5.4 は列 N に欠損値フラグを通知します。 しかし、「欠損値」がかなり複雑な数式の評価中に出てきた場合、例えば using (column(strcol(1)) などの場合は、それを NaN と評価し、欠損デー タ点ではなく不正データとして取り扱う可能性があります。その場合でもこれ を欠損値として扱いたければ、コマンド set datafile missing NaN を使用 してください。

竹野茂治@新潟工科大学
2022-07-20