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 では変更されています。以下の例で、gnuplot バージョン 4 とバー
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 N、using ($N)、using (func($N)) の いずれを使う場合でも、今の gnuplot は列 N に欠損値フラグを通知します。 しかし、「欠損値」がかなり複雑な数式の評価中に出てきた場合、例えば using (column(strcol(1)) などの場合は、それを NaN と評価し、欠損デー タ点ではなく不正データとして取り扱う可能性があります。その場合でもこれ を欠損値として扱いたければ、コマンド set datafile missing NaN を使用 してください。
竹野茂治@新潟工科大学