34.1 データ (data)

ファイルに納められた離散的なデータは、plot コマンドライン上で、その データファイル名 (単一引用符または二重引用符で囲まれた) を指定すること によって表示できます。

書式:

     plot '<file_name>' {binary <binary list>}
                        {matrix}
                        {index <index list>}
                        {every <every list>}
                        {thru <thru expression>}
                        {using <using list>}
                        {smooth <option>}

修正子の binary, index, every, thru, using, smooth は、そ れぞれに分けて説明します。簡単に言うと、binary はデータ列をバイナリ ファイルから取得できるようにし (デフォルトは ASCII ファイル)、index はマルチデータセットファイルからどのデータセットを表示するのかを選び、 every が、一つのデータセットからどの点を表示するのかを選び、using は一行からどの列を解釈するのかを決定し (thru は、using の特別な場 合である)、そして smooth が、単純な補間と近似を行います。(splot は、よく似た書式を持っていますが、smooth オプションと thru オプシ ョンはサポートしていません)

ASCII データファイル:

データファイルは、一行につき少なくとも一つのデータ点を含む必要がありま す (using は一行から一つのデータポイントを選ぶことができます)。# (VMS では !) で始まる行は、コメントとして扱われ、無視されます。各デ ータ点は、(x,y) の組を表します。エラーバー、または折れ線表示付エラーバ ーの plot では (以下参照: set style errorbars (p. [*]) またはset style errorlines (p. [*]))、各データ点は、(x,y,ydelta), (x,y,ylow,yhigh), (x,y,xdelta), (x,y,xlow,xhigh), (x,y,xlow,xhigh,ylow,yhigh) のいずれか を意味します。

どんな場合でも、書式の指定子が using オプションによって与えられてい なければ、データファイルの各行の数字は、ホワイトスペース (一つまたは複 数の空白かタブ) によって区切られている必要があります。このホワイトスペ ースは、各行を列の項目に区切ります。ただし、二重引用符で囲まれたホワイ トスペースは列の勘定では無視され、よって次のようなデータ行は 3 列、と 見なされます:

     1.0 "second column" 3.0

データは、指数部に e, E の文字をつけた指数表記で書かれていても構いませ ん。コマンド set datafile fortran が有効な場合は、fortran の指数指定 子 d, D, q, Q も使えます。

必要であるのはただ一つの列 (y の値) のみです。もし x の値が省略された ら、gnuplot はそれを 0 で始まる整数値として用意します。

データファイルにおいて、ブランク行 (空白と改行、復帰以外に文字を含まない行) は重要です -- - ブランク行の対は、index (以下参照:plot datafile index (p. [*])) を区切ります。2 つのブランク行で分離されたデー タは、別々のデータファイルのデータであるかのように扱われます。

一つのブランク行は、plot に不連続を指示します; ブランク行によって区 切られた点は線で結ばれることはありません (line style で書かれている場 合には)。

もし autoscale の状態であれば (set autoscale 参照)、軸は全てのデータ ポイントを含むように自動的に引き伸ばされて、目盛りが書かれる状態ならば 全ての目盛りがマークされます。これは、2 つの結果を引き起こします: i) splot では、曲面の角は底面の角に一致していないことがあります。この場 合、縦の線は書かれることはありません。ii) 2 種類の軸での、同じ x の範 囲のデータの表示の際、もし x2 の軸に対する目盛りが書かれていない場合は、 x 座標があっていないことがあります。これは x 軸 (x1) は全ての目盛りに まで自動的に引き延ばされるのに対し、x2 軸はそうではないからです。次の 例でその問題を見ることができます:


     reset; plot '-', '-' axes x2y1
     1 1
     19 19
     e
     1 1
     19 19
     e

これを避けるには、set autoscale コマンドの fixmin/fixmax オプシ ョンを使うことができます。これは、軸の範囲を自動的に拡張して、次の目盛 りの刻みに合うようにする機能を無効にします。

バイナリデータファイル:

gnuplot はバイナリデータファイルを読むこともできます。しかし、そのファ イルフォーマットに関する十分詳細な情報は、ユーザがコマンドラインから与 えるか、またはサポートされている filetype のバイナリ形式のファイルそ れ自身から抜き出されるかする必要があります。バイナリファイルには 2 つ の形式、matrix バイナリ形式と general バイナリ形式があります。

matrix バイナリ形式は、32 ビット IEEE 規格の浮動小数値 (float) が 2 次 元配列の形で並び、それらの座標値を表す行と列が追加されています。ASCII matrix 同様、using リストにおいては、座標用の列の並び (1 列目) が using の 1 番目の要素 (x 座標) に対応し、座標用の行の並び (1 行目) が using の 2 番目の要素 (y 座標) に対応し、配列の各値が using の 3 番目 の要素 (z 座標) に対応します。

general バイナリ形式は、任意個の列のデータを含み、それらの情報はコマン ドラインで指定する必要があります。例えば array, record, format, using などでサイズや形式、データの次元を指定できます。他にも、ファイ ルヘッダ読み飛ばしたり、エンディアン (endian) を変更するための有用なコ マンドがありますし、配置、データの変換を行なうコマンドの組があります。 それは、一様に標本化されたデータの場合、その座標がファイルには含まれな いことが良くあるからです。matrix バイナリや ASCII データと違っていると ころですが、general バイナリは 1,2,3 といった using リストで生成される 列番号を使わず、むしろ 1 列目はファイルの 1 列目、あるいは format リ ストで指定されたもの、になります。

さまざまな binary オプションに対する大域的なデフォルトの設定も可能で、 それは (s)plot < filename> binary ... コマンドに与えるオプションと全 く同じ書式で指定できます。その書式は set datafile binary ... です。 一般的な規則として、デフォルトのパラメータはファイルから抜き出されたパ ラメータで上書きされ、それはコマンドラインで指定された共通なパラメータ で上書きされます。

例えば array, record, format, filetype の general バイナリ形式 を特定するようなキーワードが何もついていなければ、デフォルトのバイナリ 形式は matrix バイナリです。

general バイナリデータは、特別なファイル名 '-' を使ってコマンドライン から入力することもできます。しかし、これはキーボードからの入力を意図し たものではなく、パイプを使ってプログラムにバイナリ形式を変換させるため のものです。バイナリデータには最後を表す記号がありませんので、gnuplot はパイプからデータを読み込む場合、array 指定子で指定した数の点数にな るまでデータを読み込み続けます。

詳細に関しては、以下参照: datafile binary (p. [*])


竹野茂治@新潟工科大学
2008年9月29日