ポリライン, ポリマーカー, テキストなどの線分による出力プリミティブは,
個別にラインインデクスを指定することができましたから, それぞれ, フルに
3桁の値で指定すると, カラーのライン, マーカー, テキストとなります. ま
た, GRPH2 の各パッケージも, 用いられている線分のラインインデクスに関す
る内部変数を変更できるようになっていますから, 容易にカラー化できます.
次の color2 プログラムで, カラー線画の実例を見てみましょう.
uzpget/uzpset ルーチンで座標軸関連の内部変数の管理を行ないますが,
そのなかの 'INDEXT1', 'INDEXT2', 'INDEXL1', 'INDEXL2' がラインインデクスの設定に関するものです. 'INDEXT1'
と 'INDEXT2' は座標軸および目盛を描く線分の, 'INDEXL1' と
'INDEXL2' はラベルおよびタイトルの文字を描く線分のラインインデク
スを指定する内部変数です. 最後が '1' のほうが小さめの目盛やラベ
ル, タイトルを描く時に用いられ, '2' のほうは大きめのものを描く時
に用いられます.
この例では, 標準のカラーマップを用いた時, 目盛は淡青で描き, 小さめの文
字は濃青で, 大きめの文字は紫で描きます. 太さは, 小さめの目盛は細線で,
それ以外はやや太くなります.
折れ線をsgplu ルーチンで描くのですが, そのラインインデクスは sgspli ルーチンで 24, 赤色の太い線と指定しています.
# color2.rb require "narray" require "numru/dcl" include NumRu include Math nmax = 50 x = NArray.sfloat(nmax+1) y = NArray.sfloat(nmax+1) #-- data --- x.indgen(1950.0, 1.0) r = 3.7 y[0] = 0.5 for n in 0..nmax-1 y[n+1] = r*y[n]*(1.0-y[n]) end yave = DCL::rave(y, nmax+1, 1) y = -4 * (y - yave) #-- graph --- iws = (ARGV[0] || (puts ' WORKSTATION ID (I) ? ;'; DCL::sgpwsn; gets)).to_i DCL::gropn iws DCL::grfrm DCL::grswnd(x[0], x[nmax], -1.5, 2.0) DCL::grsvpt(0.2, 0.9, 0.2, 0.9) DCL::grstrn(1) DCL::grstrf DCL::sgiset('IFONT', 2) DCL::uziset('INDEXT1', 402) DCL::uziset('INDEXT2', 404) DCL::uziset('INDEXL1', 303) DCL::uziset('INDEXL2', 123) DCL::uxaxdv('B', 2.0, 10.0) DCL::uxaxdv('T', 2.0, 10.0) DCL::uxsttl('B', 'YEAR', 0.0) DCL::uyaxdv('L', 0.1, 0.5) DCL::uyaxdv('R', 0.1, 0.5) cttl = DCL::csgi(131) + 'T [K]' DCL::uysttl('L', cttl, 0.0) DCL::uxmttl('T', 'INTERANNUAL VARIATION', 0.0) DCL::sgspli(24) DCL::sgplu(x, y) DCL::grclsprogram color2