12.2 カラーライン

ポリライン, ポリマーカー, テキストなどの線分による出力プリミティブは, 個別にラインインデクスを指定することができましたから, それぞれ, フルに 3桁の値で指定すると, カラーのライン, マーカー, テキストとなります. ま た, GRPH2 の各パッケージも, 用いられている線分のラインインデクスに関す る内部変数を変更できるようになっていますから, 容易にカラー化できます. 次の COLOR2 プログラムで, カラー線画の実例を見てみましょう.

UZpGET/UZpSET ルーチンで座標軸関連の内部変数の管理を行ないますが, そのなかの 'INDEXT1', 'INDEXT2', 'INDEXL1', 'INDEXL2' がラインインデクスの設定に関するものです. 'INDEXT1' と 'INDEXT2' は座標軸および目盛を描く線分の, 'INDEXL1' と 'INDEXL2' はラベルおよびタイトルの文字を描く線分のラインインデク スを指定する内部変数です. 最後が '1' のほうが小さめの目盛やラベ ル, タイトルを描く時に用いられ, '2' のほうは大きめのものを描く時 に用いられます.

この例では, 標準のカラーマップを用いた時, 目盛は淡青で描き, 小さめの文 字は濃青で, 大きめの文字は紫で描きます. 太さは, 小さめの目盛は細線で, それ以外はやや太くなります.

折れ線をSGPLU ルーチンで描くのですが, そのラインインデクスは SGSPLI ルーチンで 24, 赤色の太い線と指定しています.

      PROGRAM COLOR2

      PARAMETER( NMAX=50 )
      REAL      X(0:NMAX), Y(0:NMAX)
      CHARACTER CSGI*1, CTTL*32

      R    = 3.7
      X(0) = 1950
      Y(0) = 0.5
      DO 10 N=0,NMAX-1
        X(N+1) = X(N) + 1
        Y(N+1) = R*Y(N)*(1.-Y(N))
   10 CONTINUE
      YAVE = RAVE( Y, NMAX+1, 1 )
      DO 20 N=0,NMAX
        Y(N) = -4*(Y(N)-YAVE)
   20 CONTINUE

      WRITE(*,*) ' WORKSTATION ID (I)  ? ;'
      CALL SGPWSN
      READ (*,*) IWS

      CALL GROPN( IWS )
      CALL GRFRM

      CALL GRSWND( X(0), X(NMAX), -1.5, 2.0 )
      CALL GRSVPT(  0.2,     0.9,  0.2, 0.9 )
      CALL GRSTRN( 1 )
      CALL GRSTRF

      CALL SGISET( 'IFONT', 2 )
      CALL UZISET( 'INDEXT1', 402 )
      CALL UZISET( 'INDEXT2', 404 )
      CALL UZISET( 'INDEXL1', 303 )
      CALL UZISET( 'INDEXL2', 123 )
      CALL UXAXDV( 'B', 2., 10. )
      CALL UXAXDV( 'T', 2., 10. )
      CALL UXSTTL( 'B', 'YEAR', 0. )

      CALL UYAXDV( 'L', 0.1, 0.5 )
      CALL UYAXDV( 'R', 0.1, 0.5 )
      CTTL = CSGI(131) // 'T [K]'
      CALL UYSTTL( 'L',CTTL, 0. )

      CALL UXMTTL( 'T', 'INTERANNUAL VARIATION', 0. )

      CALL SGSPLI( 24 )
      CALL SGPLU( NMAX+1, X, Y )
      CALL GRCLS

      END
PROGRAM COLOR2