第 5 章 おまかせ二次元図
この章では, 2 次元データA(x; y) をグラフ化します. A がスカラーなら同じ値のところを結ぶ等高線図(コ ンター・プロット) になり, A が2 次元のベクトルならば矢印を用いた「流れ図」となります. これらの場 合, 作画範囲(x; y) は自分で把握できているので, ウインドウは自分で陽に設定し, コンターや矢印を「お まかせ」で描くことにします.

5.1 等高線図

格子点で与えられた2 次元のスカラーデータを手早く等高線図で描きたいというときには, サブルーチン UDCNTR を呼びます(U2D1). UDCNTR ルーチンは等高線を描くだけですから, まず正規化変換を設定します. ウインドウはGRSWND ルーチンで[TMIN,TMAX][ZMIN,ZMAX]([0; 5] [20; 50]) と陽に設定しますが, ビュー ポート( [0:2; 0:8] [0:2; 0:8]) と変換関数番号(1: 直角一様座標) は括弧内の初期値を用いるので, USPFIT ルーチンを呼び, さらにGRSTRF ルーチンでこれらを確定しています.

次に, USSTTL ルーチンで座標軸タイトルの情報を与え, USDAXS ルーチンでおまかせの座標軸を描きます.

そして, 最後に UDCNTR ルーチンを呼んで等高線を描きます. 現在設定されているウインドウいっぱいに等 間隔の格子点が設定されて, コンタリングが行なわれます. つまり, 座標軸の目盛に関係なく, U(1,1) が左 下隅, U(NT,NZ) が右上隅にくるように等間隔の格子点座標が設定されます. コンターレベルは自動的に決 定され, 図の下にそのコンター間隔が表示されます. UDCNTR の引数の2 番目以降で配列の寸法を指定しま すが, 第1 次元寸法を2 度指定するのは, 配列の一部分だけを作画できるようにするためです. この例のよ うにデータ全部を描く場合は, 2 番目の引数と3 番目の引数を同じ(NT) にします.

5.2 トーン付き等高線図

サブルーチン UETONE を呼ぶだけで, とりあえず負の領域にトーンをつけることができます. 次のプログラ ム例U2D2 は, U2D1 の結果に加えて, 負の領域に斜線のハッチをつけます. ここで, 24 行めでSGLSET ルー チンを呼んで, トーンに関する論理型内部変数'LSOFTF' を.TRUE. に設定しています. これを.FALSE.(初 期値) で描くと, 出力装置によっては先に描かれた図形が消えてしまうことがあります. 'LSOFTF' の設定 を変えたり, UETONE を呼ぶ順序をUSDAXS の前にしたりして, 結果がどのようになるか確かめてみましょ う. また, この例では, ビューポートを陽に設定して長方形にしている点にも注意して下さい.

5.3 ベクトル場

今度は, 2 次元のベクトル場を手早く矢印で描きたいというときの例題です. このプログラムU2D3 は簡単 な変形場を描くものですが, サブルーチン UGVECT 1 つを呼ぶだけで十分です. 前節の等高線図の場合と同 様に, おまかせの座標軸を描画したあとでUGVECT ルーチンを呼んでベクトル場を描いています.

この例でも, 等間隔の格子点を設定して, それぞれの格子点でのベクトルを矢印で表現します. おまかせ描 画のときには, ベクトルの長さが格子点間隔を越えないようにスケーリングファクターが決定され, それを 乗じてベクトルが描かれます. この場合, x 成分とy 成分のスケーリングファクターは同じになっていて, 図の下部マージンにはその値が表示されています.

5.4 トーン付き等高線とベクトル場の重ね書き

最後にトーン付の等高線図とベクトル場を重ね書きした例を示します(U2D4). UGVECT, UDCNTR, UETONE の サブルーチンを順に呼んでいます. ここでは, UESTLV ルーチンでトーンをつけるレベルとパターンを指定 しています.