つぎのステップ

図形を構成する基本要素は,折れ線とマーカー列です.(x,y)座標値の配 列とそのデータ数を与えて,折れ線で結んだり,マーカー列で表示します.い わゆる,軌跡図や分散図の基本です.線やマーカーにはそれぞれいくつかの属 性があり,これらを変更すると多種多様な線やマーカーが描けます.前章のお まかせルーチン USGRPH をいくつかのサブルーチンに分解すると,この ような変更が容易に行なえます.

グラフ描画の基本要素として,これら二つ以外にも,文字列を描いたり,多角 形領域を塗りつぶしたりする機能がありますが,ここでは詳しく述べません. 気になる人は「らくらくDCL」を参考にして下さい.

[here]節では「正規化変換」に関する記述が出てきますが, ちゃんとした説明は次章で行ないます.ここで登場する USPFITGRSTRF の二つのサブルーチンは,とりあえず「おまじない」と思って おいてもかまいません.

USGRPHの分解

[here]節のプログラム 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 ルーチ ンで「正規化変換」を確定します.ここで出てきた「正規化変換」については, 第 [here]節で詳しく説明します.いまは,USPFITGRSTRF の二つのサブルーチンで,これらの作業を行なっているとだけ認識し ておいて下さい.

次の USDAXS ルーチンは「おまかせ」で座標軸を描くルーチンです.ま さに「おまかせ」ですから,引数はありません.そして,UULIN ルーチ ンで折れ線を描いているのです.

基本概念(2): 折れ線(軌跡図)

次のプログラム STEP1 では,UULIN サブルーチンを用いて4種類 の折れ線を一枚の図に重ね書きしてみましょう.まず,USSPNTルーチン を4回呼んで XY0, Y1, Y2, Y3 のデータ のなかから x と y の最大値と最小値を見つけ,「おまかせ」で正規化変 換を確定して,座標軸も描きます.

さて,折れ線の描画ですが,折れ線には,線種と線の太さの2つの属性があり ます.UUSLNTUUSLNI のサブルーチンでこれらの属性を変更 でき,UULIN ルーチンで折れ線を描きます.属性を陽に変更しなければ, それぞれの初期値(デフォルト)がそのまま使われます.

このプログラム例では,まず初期値のまま (X,Y0) の折れ線を描き,次 に少し線を太くして,破線で (X,Y1) を,点線で (X,Y2) を,そ して1点鎖線で (X,Y3) を描いています.

これらは,個々のルーチンで属性を決めてから UULIN で折れ線を描く, 「根回し型」のルーチン群です.これに対して,ひとつのサブルーチンで属性 も同時に指定して折れ線を描く,「上意下達型」のルーチン UULINZ も 用意されています.好みの方を使って下さい.


step1.f: frame1

step/step1.f

基本概念(3): マーカー列(分布図)

前節で紹介した UULIN ルーチンのかわりに UUMRK を用いると, データ列をマーカー列で表現でき,いわゆる分布図が描けます.次のプログラ ム STEP2 では,乱数列をもとに (X,Y) のデータをつくり,分布 図を描きます.8行めと10行めの関数 RNGU3(ISEED) は,DCLの中の「そ の他の基本関数パッケージ」にある,一様乱数を生成する関数のひとつです. このように,DCLにはグラフィクス以外にもさまざまなパッケージが用意され ていることを心に留めておいて下さい.USSPNT でデータの範囲を求め, USPFITGRSTRF で正規化変換を確定し,USDAXS で座標 軸を描き,UUMRK を使ってマーカー列を描いています.

ところで,マーカーには,マーカーの種類,描く線の太さ,マーカーの大きさ の3つの属性があります.UUSMKT, UUSMKI, UUSMKS の各サ ブルーチンでこれらの属性を変更できます.これらを呼んで思い通りのマーカー が選べたら,UUMRK ルーチンでマーカー列を描くことになります.また, 同様に「上意下達型」のルーチン UUMRKZ もあります.

このプログラム例では,太い線で初期値の1.5倍の大きさのマーカーを選び, マーカーの種類は,最初の25個を初期値の '' で,次からの25個ずつ をそれぞれ,' +', '', '' で描いています.

ここで,マーカーの大きさで出てきた「V-座標系」について説明しておきましょ う.実際に作画できる領域は出力装置によって異なりますが,DCLではそれらに 最大内接する正方形を考えて,「描画領域」とします.この1辺の長さが1にな るように規格化した[0,1] [0,1]の座標系をV-座標系と呼びます.

step/step2.f


step2.f: frame1


Back to Main


Latex Source


地球流体電脳倶楽部 : 95/6/9 (Version 5.0)

NUMAGUTI Atusi <a1n@gfdl.gov>
Last Modified: Thu Aug 31 13:12:29 EDT 1995