次のプログラム 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.closePROGRAM UXYZ2
対数座標軸を描くには, まずパラメタ 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以下の場合には, 目盛間隔の狭いところから省か れます.