7.2 右も左も日付軸

これまで, 同じ座標軸作画ルーチンを呼んでも, 下側と左側にはラベルを描き, 上側と右側は目盛だけでラベルは描きませんでした. 左右両方に異なったラベ ルの座標軸を描きたい時にはどうすれば良いのでしょう(UXYZ6).

座標軸のラベルを描くか描かないかは, Axis::Lin の管理する内部変数によって 制御されています. この例のように, 右側の座標軸に関しては labelyr というパラメタを .TRUE. に することによって, 右側の座標軸についてもラベルが描けます. 左側は labelyl, x軸の上と下はそれぞれ, labelxt, labelxb によって制御されています.

#
# uxyz6.rb

require "narray"
require "numru/advanceddcl"
include NumRu::AdvancedDCL
include NMath


id0 = 19911201
nd = 720
rnd = nd


#-- graph ---
Dev.open

Axis::Lin.zfact(0.8)
Frame.new

Fig.window=[-180.0, 180.0, rnd, 0.0]
Fig.viewport=[0.2, 0.8, 0.2, 0.8]
Fig.transnum=1

Axis::Lin.xaxdv('B', 10.0, 60.0)
Axis::Lin.xaxdv('T', 10.0, 60.0)
Axis::Lin.xsttl('B', 'LONGITUDE', 0.0)

Dateaxis.ydraw('L', id0, nd)

Axis::Lin.labelyr=true
Axis::Lin.yaxdv('R', 20.0, 100.0)
Axis::Lin.irotcyr =  -1
Axis::Lin.ysttl('R', 'DAY NUMBER', 0.0)

Axis::Lin.xmttl('T', 'UXAXDV/UCYACL', 0.0)

Dev.close

PROGRAM UXYZ6

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

右側の座標軸は Axis::Lin.yaxdv によって描きました. 11行めで UYMINrnd(=720), UYMAX が 0.0 とウインドウを指定したので, ラ ベルの値が上から下に増えています. また, パラメタ irotcyr を-1にしたので, Axis::Lin.ysttl で描いた 'DAY NUMBER' という座標軸のタイトルも180度回転しています. この回転角の値は, 90度を単位とする整数値で指定します.

左側の座標軸は Dateaxis.ydraw メソッドで描いたのですが, この例からわかる ように, 日数のラベルが描けないような場合には,適当に判断して月と年の目 盛だけが描かれます. なお, Dateaxis.xdraw/Dateaxis.ydraw の下位ルーチンを呼ぶこと によって, 日, 月, 年の座標軸を別々に描くこともできます.

なお, この例では9行めでAxis::Lin.zfact を呼んで, 文字や目盛のサイズを全 体的に小さく(デフォルトの0.8倍)して座標軸を描いています.