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