最後のプログラム UXYZ8 では, 同じ側に2本以上の座標軸を別の目盛
で描こうという時の実例です.
軸を外側へずらしたい, または, すでに描いた軸の外側にもう一本軸を描きた
いというときは, x軸については Axis::Lin.xsaxs メソッドを, y軸について
は Axis::Lin.ysaxs メソッドを呼ぶだけです. 引数は, 場所を指定するおなじみ
の引数です. これらのメソッドを呼ぶと, 次の軸は内側の軸と重ならない程度
に適度に外側に描かれます. これを何回も使えば, 簡単にいくつもの軸を一つ
の側に描かせることができます.
1つの側に複数の軸を描こうとする時, そのためにいちいちウインドウを設定 し直す必要はありません. この例では, y座標のウインドウとしてセ氏温度 で0度から100度の範囲で設定したのですが, 換算の便のためにケルビンやカ氏 の目盛りもあわせて描いています. ウインドウ設定に影響を与えず, 目盛りだ けを変えて複数の座標軸を描きたいときは, オフセット機能を用います. その ためにまず パラメタ loffset を .TRUE. にしておきます. そして, 必要なところで, パラメタ yoffset と yfact (x軸については xoffset と xfact)を設定すると, 目盛の位置が yoffset だけ平行移動し, 目盛の間隔が yfact 倍されます.
# # uxyz8.rb require "narray" require "numru/advanceddcl" include NumRu::AdvancedDCL include NMath id0 = 19911201 nd = 180 rnd = nd #-- graph --- Dev.open Axis::Lin.zfact(0.7) Axis::Lin.loffset = true Frame.new Fig.window=[0.0, rnd, 0.0, 100.0] Fig.viewport=[0.4, 0.9, 0.3, 0.8] Fig.transnum=1 Dateaxis.xdraw('B', id0, nd) Dateaxis.xdraw('T', id0, nd) Axis::Lin.xsaxs('B') Axis::Lin.xaxdv('B', 10.0, 20.0) Axis::Lin.xsttl('B', 'DAY NUMBER', 0.0) Axis::Lin.yaxdv('L', 5.0, 10.0) Axis::Lin.yaxdv('R', 5.0, 10.0) Axis::Lin.ysttl('L', 'CELSIUS SCALE', 0.0) Axis::Lin.ysaxs('L') Axis::Lin.yoffset = 273.15 Axis::Lin.yfact = 1.0 Axis::Lin.yaxdv('L', 5.0, 10.0) Axis::Lin.ysttl('L', 'KELVIN SCALE', 0.0) Axis::Lin.ysaxs('L') Axis::Lin.yoffset = 32.0 Axis::Lin.yfact = 1.8 Axis::Lin.yaxdv('L', 10.0, 20.0) Axis::Lin.ysttl('L', 'FAHRENHEIT SCALE', 0.0) Axis::Lin.xsttl('T', '(LOFFSET=.TRUE.)', 0.0) Axis::Lin.xmttl('T', 'UXSAXS/UYSAXS', 0.0) Dev.closePROGRAM UXYZ8