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