Next:タイトルを描く Up:1次元量の表示 Previous:1変数のグラフを描く

複数のデータを1つのグラフに描く

とにかく計算はできるようになったのでデータはどんどん出てくるが, 一つのグラフに一つのデータでは紙がいくらあっても足りない. かといって, USGRPH の後で SGPLU あるいは UULIN (これは片方の座標軸の点列情報を等間隔とみなして折れ線を描く機能を持った, 基本的には SGPLU と同じような動作をする作画ルーチンである)等を使って折れ線だけ追加すると, 座標軸からはみ出してしまう可能性もある.


uspk04.f/uspk05.f:page1

uspk04.f はこのような場合のプログラム例である. USSPNT は, X, Y軸のスケーリング範囲に含めるべきデータを指定して作画範囲を決める. このルーチンは USGRPH を呼ぶ前に何度でも呼ぶことができる. (USSPNT は X あるいは Y 軸方向のどちらかを「不定」として片側のみのスケーリングもできる.) USGRPH はこのルーチンで指定したデータを含むようにスケーリングを行うので, USGRPH の後でSGPLU あるいはUULIN を使って折れ線を追加しても, 座標軸からはみ出すことはない.

また, USGRPH では折れ線のラインインデックスやラインタイプを直接指定することはできないが, USGRPH は単にUULIN を呼んでいるだけなので, あらかじめUUSLNT/UUSLNI でこれらを指定しておけば, USGRPH で描かれる折れ線の属性を変えることができる.

ところで, uspk04.f で描かれる3本の線はどれも同じ様な折れ線でありながら, 1本はUSGRPH で, あとの2本はUULINZ で描く,というのは何となく 不平等な感じで気持ちが悪い. そんな時, USGRPH をばらして使ってやれば気持ちのよいプログラムが書ける. uspk05.fはuspk04.fと全く同じ結果を得るプログラムである.

USDAXS は, 現在設定されている正規化変換に対して, とにかく適当な座標軸 (デフォルト座標軸) を描くものである. ここで描かれる座標軸の位置はUSCSET の内部変数'CXSIDE', 'CYSIDE' で指定され, 初期値はそれぞれ'BT', 'LR' である. したがって, USDAXS 一行で4本の座標軸が描かれることになる.

USDAXS を使うと, データを与える部分と折れ線を描く部分が完全に独立して書けるので, よりきれいなプログラムとなり, DO ループで複数の折れ線を書くときなどは便利である. また, この書き方では折れ線を描かずに, SGPMU あるいはUUMRK 等でマーカー列を描くことも自由にできる. ただし, USDAXS は単に座標軸を描くだけのルーチンなので, その前に USPFITによって変換関数に必要なパラメータの設定, およびGRSTRFによって変換関数の確定をしておく必要がある.

以降の例題ではもっぱら USGRPH を用いているが, uspk05.fの様にこれを USSPNT, USPFIT, GRSTRF, USDAXS および UULIN に分解しても全く同じ結果が得られる. (事実, USGRPH もこれらの4行で構成されている.)

なお, USSPNT で設定された値は, USGRPH またはUSDAXS を実行した際にリセットされる.

Source:uspack/uspk04.f

Source:uspack/uspk05.f


地球流体電脳倶楽部 DCL-5.0
Last modified: Wed Apr 30 13:59:59 1997