3.3 基本概念(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-座標系と呼びます.

      PROGRAM STEP2

      PARAMETER( NMAX=100 )
      REAL X(NMAX), Y(NMAX)

*- データ -- 
      ISEED = 1 
      X(1) = 2.*(RNGU3(ISEED)-0.5) 
      DO 10 N=2,NMAX 
        X(N)   = 2.*(RNGU3(ISEED)-0.5) 
        Y(N-1) = X(N) 
   10 CONTINUE 
      Y(NMAX) = X(1) 
 
*- グラフ -- 
      WRITE(*,*) ' WORKSTATION ID (I)  ? ;' 
      CALL SGPWSN 
      READ (*,*) IWS 
 
      CALL GROPN( IWS ) 
      CALL GRFRM 
 
      CALL USSPNT( NMAX, X, Y ) 
      CALL USPFIT 
      CALL GRSTRF 
 
      CALL USSTTL( 'X-TITLE', 'x-unit', 'Y-TITLE', 'y-unit' ) 
      CALL USDAXS 
 
      CALL UUSMKI( 5 ) 
      CALL UUSMKS( 0.015 ) 
      CALL UUMRK( NMAX/4, X( 1), Y( 1) ) 
 
      CALL UUSMKT( 2 ) 
      CALL UUMRK( NMAX/4, X(26), Y(26) ) 
 
      CALL UUSMKT( 3 ) 
      CALL UUMRK( NMAX/4, X(51), Y(51) ) 
 
      CALL UUSMKT( 4 ) 
      CALL UUMRK( NMAX/4, X(76), Y(76) ) 
 
      CALL GRCLS 
 
      END 
 
PROGRAM STEP2

\resizebox{10cm}{!}{\includegraphics{step/step2.eps}}
step2.f: frame1