100.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 で設定されていれば それで設定した範囲全体に渡りますが、そうでなければ set xrange の範囲 全体に渡ります。

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


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

'+' の直前に、独立な標本範囲を指定することもできます。通常の関数描画の と同様、独立変数に名前を割り当てることもできます。 以下は、標本間隔 (1.5) を標本範囲内に指定した例です。標本点は、-3, 1.5, 0, 1.5, ... 24 の位置で取ります。


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

さらに、+ の範囲指定には、標本増分を与えることもできます。 plotsplot コマンドのすぐ後に標本範囲を書くと, 間違って x 軸の 範囲との解釈されてしまうかもしれません。そのあいまいさを避けるために、 キーワード sample を前置するか、または標本範囲の 3 番目のフィールド として標本間隔を与えるかすればいいでしょう。その標本間隔は空でもよく、 その場合はデフォルトを使用します。そのようなあいまいさの例については、 以下参照: plot sampling (100.7)


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

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


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

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

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

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

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


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

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

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