34.1.7 Special-filenames

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

'-' は、データとコマンドを一緒に持つことが有用である場合のためにあ ります。例えば、gnuplot があるフロントアプリケーションのサブプロセ スとして起動される場合などがこれにあたります。例として、デモンストレ ーションでこの機能を使うものがあるでしょう。indexevery のよう な plot のオプションが与えられていると、それらはあなたに使われるこ とのないデータを入力する事を強要します。次の例を見てください。


     plot '-' index 0, '-' index 1
     2
     4
     6


     10
     12
     14
     e
     2
     4
     6


     10
     12
     14
     e

これは、実際に動作しますが、


     plot '-' , '-'
     2
     4
     6
     e
     10
     12
     14
     e

とタイプする方が楽でしょう。

もし、replot コマンドで '-' を使うなら、あなたは 1 度以上データを 入力する必要があでしょう。

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


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

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

popen 関数を持っているコンピュータシステム (Unix) の上では、データフ ァイルは、'< ' で始まるファイル名によって、シェルコマンドからパイプ入 力することができます。例えば


     pop(x) = 103*exp(-x/10)
     plot "< awk '{print $1-1965, $2}' population.dat", pop(x)

は、最初の人口の例と同じ情報を描画します。ただし、x 座標は 1965 年か らの経過年を表すようになります。この例を実行するときは、上のデータフ ァイルのコメント行をすべて削除しなければなりませんが、または上のコマ ンドの最初の部分を次のように変えることもできます (コンマに続く部分):


     plot "< awk '$0 !~ /^#/ {print $1-1965, $2}' population.dat"

このアプローチは最も柔軟性がありますが、using あるいは thru キー ワードを用いた単純なフィルタリングで行うことも可能です。

竹野茂治@新潟工科大学
2007年3月4日