7.4 同じ側に何本もの軸を

最後のプログラム 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.close

PROGRAM UXYZ8

\resizebox{10cm}{!}{\includegraphics{uxyz2/uxyz8.eps}}
uxyz8.rb: frame1