6.2 対数座標軸

次のプログラム UXYZ2 は対数座標軸の例です. 対数座標軸の描画は Axis::Lin が担当しています.

#
# uxyz2.rb

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


#-- graph ---
Dev.open

Frame.new

Fig.window=[1.0e0, 1.0e5, 1.0e3, 1.0e0]
Fig.viewport=[0.2, 0.8, 0.2, 0.8]
Fig.transnum=4

Axis::Log.xdraw('B', 1, 9)
Axis::Log.xdraw('T', 1, 9)
Axis::Lin.xsttl('B', '[X]', 1.0)

Axis::Log.ydraw('L', 3, 9)
Axis::Log.ydraw('R', 3, 9)
Axis::Lin.ysttl('L', '[Y]', 1.0)

Axis::Lin.xmttl('T', 'ULXLOG/ULYLOG', 0.0)

Dev.close
PROGRAM UXYZ2

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

対数座標軸を描くには, まずパラメタ transnum によって対数変換をあら わす変換関数番号を設定します. 変換関数番号についてはすでに第 3.1.3節で説明しましたが, 1: 直角一様座標(線形座標), 2: 片対数(y軸)座標, 3: 片対数(x軸)座標, 4: 両対数座標です.

対数座標軸を描くメソッドは Axis::Log.xdraw, Axis::Log.ydrawです. ここで も, 最初の引数で座標軸を描く場所を指定します. 2番めの引数は, 1桁の範 囲に描くラベルの数であり, x軸については1となっていて, 10nのところ にのみラベルが描かれます. また, y軸については3となっていて, 10n以 外にも 2×10n , 5×10nにラベルが描かれてます. この引数 が2ならば, 10nと 2×10n にラベルが描かれます. 最後の引数は, 1桁の範囲に描く目盛りの数です. ここでは1から9まですべての目盛を打つよ うに, 9を指定しています. 8以下の場合には, 目盛間隔の狭いところから省か れます.