83.1.1 Matrix

gnuplot は、matrix (配列) 形式のデータを、2 つの異なる形式で解釈するこ とができます。その 1 つは、x, y の座標が一様であると仮定して、その値を この一様な格子の matrix のそれぞれの要素に割り当てる方法です。これは、 ASCII データに対してはデフォルトですが、バイナリデータに対してはそうで はありません。 一様な matrix データを描画するコマンドの例:
    splot 'file' matrix using 1:2:3          # ASCII データ
    splot 'file' binary general using 1:2:3  # バイナリデータ

一様な格子の matrix データでは、各ブロックの z の値は一行で一度に読ま れます。すなわち、

   z11 z12 z13 z14 ...
   z21 z22 z23 z24 ...
   z31 z32 z33 z34 ...

等。

ASCII 入力では、空行やコメント行は配列データを終了させ、新たな曲面の網 (mesh) を開始します。いつものことですが、splot コマンド の index オプションを使ってファイル内の網を自由に選択できます。 2 つ目の形式は、非一様な格子で、x, y 座標は明示していると仮定するもの で、入力データの最初の行を y 座標、最初の列を x 座標とみなします。 バイナリデータに対しては、1 行目の最初の要素は、データ列数でなければい けません (ASCII データではその数は無視されます)。座標とデータ値は、 バイナリデータでは単精度浮動小数値とみなされます。 非一様な matrix データを描画するコマンドの例:

    splot 'file' nonuniform matrix using 1:2:3  # ASCII データ
    splot 'file' binary matrix using 1:2:3      # バイナリデータ

よって、非一様な matrix データの構造は以下のようになります:


     <N+1>  <y0>   <y1>   <y2>  ...  <yN>
      <x0> <z0,0> <z0,1> <z0,2> ... <z0,N>
      <x1> <z1,0> <z1,1> <z1,2> ... <z1,N>
       :      :      :      :   ...    :

これらは以下のような 3 つの数字の組に変換されます:


     <x0> <y0> <z0,0>
     <x0> <y1> <z0,1>
     <x0> <y2> <z0,2>
      :    :     :
     <x0> <yN> <z0,N>


     <x1> <y0> <z1,0>
     <x1> <y1> <z1,1>
      :    :     :

そして、これらの 3 つの数字の組は gnuplot の孤立線に変換され、その後 gnuplot が通常の方法で描画の残りを行います。

行列やベクトルの操作のサブルーチン (C による) が binary.c に用意され ています。バイナリデータを書くルーチンは


     int fwrite_matrix(file,m,nrl,nrl,ncl,nch,row_title,column_title)

です。これらのサブルーチンを使う例が bf_test.c として用意されていて、 これはデモファイル demo/binary.dem 用に複数のバイナリファイルを生成 します。

plot での使用法:

   plot `a.dat` matrix
   plot `a.dat` matrix using 1:3
   plot 'a.gpbin' {matrix} binary using 1:3

これらは配列の行を描画し、using 2:3 とすれば配列の列を描画、using 1:2 は、点の座標を描画します (多分無意味です)。オプション every を適用す ることで明示的に行や列を指定できます。

例 - ASCII データファイルの配列の軸の拡大:

   splot `a.dat` matrix using (1+$1):(1+$2*10):3

例 - ASCII データファイルの配列の第 3 行の描画:

   plot 'a.dat' matrix using 1:3 every 1:999:1:2

(行は 0 から数えられるので、3 ではなくて 2 を指定します)。

Gnuplot は、array, record, format, filetype などの general バ イナリ形式を特定するようなキーワードをつけずにオプション binary を使 うことで、matrix バイナリファイルを読み込むことができます。その他の変換 用の general バイナリキーワードは、matrix バイナリファイルにも適用でき るでしょう。(詳細は、以下参照: binary general (71.2.1)。)

竹野茂治@新潟工科大学
2012年10月3日