ポリライン, ポリマーカー, テキストなどの線分による出力プリミティブは,
個別にラインインデクスを指定することができましたから, それぞれ, フルに
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