7.4 同じ側に何本もの軸を

最後のプログラム UXYZ8 では, 同じ側に2本以上の座標軸を別の目盛 で描こうという時の実例です.

軸を外側へずらしたい, または, すでに描いた軸の外側にもう一本軸を描きた いというときは, x軸については Axis::Lin.xsaxs メソッドを, y軸について は Axis::Lin.ysaxs メソッドを呼ぶだけです. 引数は, 場所を指定するおなじみ の引数です. これらのメソッドを呼ぶと, 次の軸は内側の軸と重ならない程度 に適度に外側に描かれます. これを何回も使えば, 簡単にいくつもの軸を一つ の側に描かせることができます.

1つの側に複数の軸を描こうとする時, そのためにいちいちウインドウを設定 し直す必要はありません. この例では, y座標のウインドウとしてセ氏温度 で0度から100度の範囲で設定したのですが, 換算の便のためにケルビンやカ氏 の目盛りもあわせて描いています. ウインドウ設定に影響を与えず, 目盛りだ けを変えて複数の座標軸を描きたいときは, オフセット機能を用います. その ためにまず パラメタ loffset.TRUE. にしておきます. そして, 必要なところで, パラメタ yoffsetyfact (x軸については xoffsetxfact)を設定すると, 目盛の位置が 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