グラフ描画の基本要素として, これら二つ以外にも, 文字列を描いたり, 多角形領域を塗りつぶしたりする 機能がありますが, ここでは詳しく述べません. 気になる人は「らくらくDCL」を参考にして下さい.
第2.1節では「正規化変換」に関する記述が出てきますが, ちゃんとした説明は次章で行ないます. ここで 登場するUSPFIT とGRSTRF の二つのサブルーチンは, とりあえず「おまじない」と思っておいてもかまい ません.
2.1 USGRPH の分解
第1.1節のプログラムHOP で呼んだUSGRPH サブルーチンがどのようなルーチンで構成されているか, 見て おきましょう. 実は,
CALL USGRPH( NMAX, X, Y )というサブルーチン・コールは, 次の5 つのサブルーチンを順に呼ぶことと同じなのです.
CALL USSPNT( NMAX, X, Y ) CALL USPFIT CALL GRSTRF CALL USDAXS CALL UULIN( NMAX, X, Y )データを自動的にスケーリングするためには, まず, 描きたいデータすべてのなかから最大値と最小値を見 つける必要があります. サブルーチンUSSPNT がこれを行ないます. つぎのUSPFIT では, これらのデータ の最大値・最小値を切りの良い数値に丸めて作画範囲を決め, ほかの「正規化変換」のパラメータも「おま かせ」で決めます. そして, GRSTRF ルーチン で「正規化変換」を確定します. ここで出てきた「正規化変 換」については, 第3.1節で詳しく説明します. いまは, USPFIT とGRSTRF の二つのサブルーチンで, これ らの作業を行なっているとだけ認識しておいて下さい.
次のUSDAXS ルーチン は「おまかせ」で座標軸を描くルーチンです. まさに「おまかせ」ですから, 引数は ありません. そして, UULIN ルーチン で折れ線を描いているのです.
2.2 基本概念(2): 折れ線(軌跡図)
このプログラム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) を描いています. これらは, 個々のルーチンで属性を決めてから UULIN で折れ線を描く, 「根回し型」のルーチン群です. これに対して, ひとつのサブルーチンで属性も同時に指定して折れ線を描く, 「上意下達型」のルーチン UULINZ も用意されています. 好みの方を使って下さい.
2.3 基本概念(3): マーカー列(分布図)
前節で紹介した 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 個ずつをそれぞれ,' +', '', '・' で描いています.
ここで, マーカーの大きさで出てきた「V-座標系」について説明しておきましょう. 実際に作画できる領域 は出力装置によって異なりますが, DCL ではそれらに最大内接する正方形を考えて, 「描画領域」としま す. この1 辺の長さが1 になるように規格化した[0; 1] [0; 1] の座標系をV-座標系と呼びます.