図形を構成する基本要素は,折れ線とマーカー列です.(x,y)座標値の配 列とそのデータ数を与えて,折れ線で結んだり,マーカー列で表示します.い わゆる,軌跡図や分散図の基本です.線やマーカーにはそれぞれいくつかの属 性があり,これらを変更すると多種多様な線やマーカーが描けます.前章のお まかせルーチン USGRPH をいくつかのサブルーチンに分解すると,この ような変更が容易に行なえます.
グラフ描画の基本要素として,これら二つ以外にも,文字列を描いたり,多角 形領域を塗りつぶしたりする機能がありますが,ここでは詳しく述べません. 気になる人は「らくらくDCL」を参考にして下さい.
第[here]節では「正規化変換」に関する記述が出てきますが, ちゃんとした説明は次章で行ないます.ここで登場する USPFIT と GRSTRF の二つのサブルーチンは,とりあえず「おまじない」と思って おいてもかまいません.
第[here]節のプログラム HOP で呼んだ USGRPH サブルーチンがどのようなルーチンで構成されているか,見ておきましょう. 実は,
CALL USGRPH( NMAX, X, Y )というサブルーチン・コールは,次の5つのサブルーチンを順に呼ぶことと同 じなのです.
CALL USSPNT( NMAX, X, Y )データを自動的にスケーリングするためには,まず,描きたいデータすべての なかから最大値と最小値を見つける必要があります. サブルーチン USSPNT がこれを行ないます.つぎの USPFIT では,これらのデータの 最大値・最小値を切りの良い数値に丸めて作画範囲を決め,ほかの「正規化変 換」のパラメータも「おまかせ」で決めます.そして,GRSTRF ルーチ ンで「正規化変換」を確定します.ここで出てきた「正規化変換」については, 第 [here]節で詳しく説明します.いまは,USPFIT と GRSTRF の二つのサブルーチンで,これらの作業を行なっているとだけ認識し ておいて下さい.
CALL USPFIT
CALL GRSTRF
CALL USDAXS
CALL UULIN( NMAX, X, Y )
次の USDAXS ルーチンは「おまかせ」で座標軸を描くルーチンです.ま さに「おまかせ」ですから,引数はありません.そして,UULIN ルーチ ンで折れ線を描いているのです.
N (整数型) データ数. X, (実数型) (x,y) Y 座標値を与える配列.
座標軸の目盛りは4辺とも描かれるが,ラベルやタイトルは左側と下側だ けに描かれる.ラベルが長くなる場合には,自動的にファクターやオフセッ トが用いられ,括弧内に示される.
座標軸のタイトルと単位は,USSTTL で設定すれば,それらも描かれる.
第[here]節参照.
第[here]節参照.
次のプログラム STEP1 では,UULIN サブルーチンを用いて4種類 の折れ線を一枚の図に重ね書きしてみましょう.まず,USSPNTルーチン を4回呼んで X と Y0, Y1, Y2, Y3 のデータ のなかから x と y の最大値と最小値を見つけ,「おまかせ」で正規化変 換を確定して,座標軸も描きます.
さて,折れ線の描画ですが,折れ線には,線種と線の太さの2つの属性があり ます.UUSLNT と UUSLNI のサブルーチンでこれらの属性を変更 でき,UULIN ルーチンで折れ線を描きます.属性を陽に変更しなければ, それぞれの初期値(デフォルト)がそのまま使われます.
このプログラム例では,まず初期値のまま (X,Y0) の折れ線を描き,次 に少し線を太くして,破線で (X,Y1) を,点線で (X,Y2) を,そ して1点鎖線で (X,Y3) を描いています.
N (整数型) データ数. X, (実数型) 折れ線を結ぶ点の(x,y) Y 座標値 を与える配列.
ITYPE (整数型) 折れ線の線種. 1:実線, 2:破線, 3:点線, 4:1点鎖線.(初期値は1)
INDEX (整数型) 折れ線の太さ. 1から大きくなるにつれて太くなる.(初期値は1)
これらは,個々のルーチンで属性を決めてから UULIN で折れ線を描く, 「根回し型」のルーチン群です.これに対して,ひとつのサブルーチンで属性 も同時に指定して折れ線を描く,「上意下達型」のルーチン UULINZ も 用意されています.好みの方を使って下さい.
パラメータは上と同じ.
step1.f: frame1
前節で紹介した UULIN ルーチンのかわりに UUMRK を用いると, データ列をマーカー列で表現でき,いわゆる分布図が描けます.次のプログラ ム STEP2 では,乱数列をもとに (X,Y) のデータをつくり,分布 図を描きます.8行めと10行めの関数 RNGU3(ISEED) は,DCLの中の「そ の他の基本関数パッケージ」にある,一様乱数を生成する関数のひとつです. このように,DCLにはグラフィクス以外にもさまざまなパッケージが用意され ていることを心に留めておいて下さい.USSPNT でデータの範囲を求め, USPFIT と GRSTRF で正規化変換を確定し,USDAXS で座標 軸を描き,UUMRK を使ってマーカー列を描いています.
ところで,マーカーには,マーカーの種類,描く線の太さ,マーカーの大きさ の3つの属性があります.UUSMKT, UUSMKI, UUSMKS の各サ ブルーチンでこれらの属性を変更できます.これらを呼んで思い通りのマーカー が選べたら,UUMRK ルーチンでマーカー列を描くことになります.また, 同様に「上意下達型」のルーチン UUMRKZ もあります.
このプログラム例では,太い線で初期値の1.5倍の大きさのマーカーを選び, マーカーの種類は,最初の25個を初期値の '' で,次からの25個ずつ をそれぞれ,' +', '', '' で描いています.
N (整数型) データ数. X, (実数型) マーカーを打つ点の(x,y) Y 座標値 を与える配列.
ITYPE (整数型) マーカーの種類. 1:'', 2:'+', 3:'', 4:'', など,フォントテーブル(付録)のDCL文字番号に 対応する文字・記号を描く.(初期値は1)
INDEX (整数型) マーカーを描く線の太さ. 1から順に太くなる.(初期値は1)
RSIZE (実数型) マーカーの大きさ. V-座標系での値で与える.(初期値は0.01)
パラメータは上と同じ.
ここで,マーカーの大きさで出てきた「V-座標系」について説明しておきましょ う.実際に作画できる領域は出力装置によって異なりますが,DCLではそれらに 最大内接する正方形を考えて,「描画領域」とします.この1辺の長さが1にな るように規格化した[0,1] [0,1]の座標系をV-座標系と呼びます.
step2.f: frame1
NUMAGUTI Atusi <a1n@gfdl.gov> Last Modified: Thu Aug 31 13:12:29 EDT 1995