88.3.9 特別なファイル名 (special-filenames)

特別な意味を持つファイル名として、次のものがあります: ' ', '-', '+', '++'

空のファイル名 ' ' は、同じ plot コマンド上で、直前の入力ファイルを再び 使用することを gnuplot に指示します。よって、同じ入力ファイルの 2 つの データ列を描画するには以下のようにします:


     plot 'filename' using 1:2, ” using 1:3

この filename は、この後の plot コマンドでも ' ' で再利用できますが、 その場合に save すると、コメントとしてその名前を記録するのみです。

'+' と '++' という特別なファイル名は、using 指定の全体と描画スタイル にインライン関数を使えるようにするための仕組みです。通常、関数描画はサ ンプル点毎に単一の y (または z) の値しか持てません。しかし疑似ファイル '+' はそれがあたかも実際の入力ファイルであるように、using 指定による 1 列目の値を標本点として扱い、さらに追加の列の値を指定することも可能で す。標本点数は set samples で制御できます。標本点は、デフォルトでは set trange で設定した範囲全体に渡りますが、trange が設定されていなけ れば set xrange の範囲全体に渡ります。

注意: trange の使用は、以前の版の gnuplot の仕様とは異なりますが、これにより x 軸の範囲とは異なる標本範囲が使用できることになります。


     plot '+' using ($1):(sin($1)):(sin($1)**2) with filledcurves

'+' の直前に、独立な標本範囲を指定することもできます。通常の関数描画の と同様、独立変数に名前を割り当てることもできます。plot の最初の要素に 与える場合、標本範囲にはそれを明示するキーワード sample を前置する必 要があります (以下も参照: plot sampling (p. [*]))。


     plot sample [beta=0:2*pi] '+' using (sin(beta)):(cos(beta)) with lines

さらに、+ の範囲指定には、標本増分を与えることもできます。


     plot $MYDATA, [t=-3:25:1] '+' using (t):(f(t))

疑似ファイル '++' は、u 方向は set samples で制御される点の数、v 方 向は set isosamples で制御される点の数の、標準的な [u,v] 座標の格子 を生成する 2 列のデータを返します。よって、'++' の描画の前に、urange と vrange を設定する必要がありますが、x と y の範囲は自動的に設定され るか、または明示的に urange, vrange とは違う値に設定できます。'++' の サンプリングでの u, v の使用は、version 5.2 で導入された変更です。 例:


     splot '++' using 1:2:(sin($1)*sin($2)) with pm3d
     plot '++' using 1:2:(sin($1)*sin($2)) with image

'-' という特別なファイル名は、データがインラインであることを指示し ます。すなわち、データをコマンドの後に続けて指定します。このときはデ ータのみがコマンドに続き得ます。よって、plot コマンドに対するフィル ター、タイトル、ラインスタイルといったオプションは、plot のコマンド ラインの方に書かないといけません。これは、unix シェルスクリプトにおけ る << (ヒアドキュメント)、あるいは VMS DCL における $DECK と同様です。 そのデータは、それらがファイルから読み込まれたかのように、1 行につき 1 つずつのデータ点が入力されます。そしてデータの終りは、1 列目の始めに 文字 "e" を置くことで指示します。

'-' は、データとコマンドを一緒に持つことが有用である場合のためにあり ます。例えば、別々のアプリケーションから gnuplot にその両方がパイプ 入力される場合です。例えば、デモファイルの中にはこの機能を使うものがあ るでしょう。indexevery のような plot のオプションが与えられ ていると、それらは使われることのないデータの入力を要求してきます。ごく 単純な場合を除くすべての場合で、'-' からデータを読み込むよりも、最初 にデータブロックを定義してそれを読み込む方が多分簡単です。以下参照:datablocks (p. [*])

もし、replot コマンドで '-' を使うなら、あなたは 1 度以上データを入力する必要があるでしょう。以下参照: replot (p. [*]), refresh (p. [*])。繰り返しま すが、データブロックを使う方がいいです。

空のファイル名 (' ') は、直前のファイル名が再び使われることを指示しま す。これは、


     plot 'ある/とても/長い/ファイル名' using 1:2, ” using 1:3, ” using 1:4

のようなときに便利です。(もし同じ plot コマンド上で、'-'' ' の 両方を使用すると、上の例にあるように、インラインデータの 2 つの集合を 与える必要があります。)

竹野茂治@新潟工科大学
2020-07-21