7.2 対数座標軸

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

# uxyz2.rb


require "narray"
require "numru/dcl"
include NumRu
include Math


#-- graph ---
iws = (ARGV[0] || (puts ' WORKSTATION ID (I)  ? ;'; DCL::sgpwsn; gets)).to_i
DCL::gropn iws

DCL::grfrm

DCL::grswnd(1.0e0, 1.0e5, 1.0e3, 1.0e0)
DCL::grsvpt(0.2, 0.8, 0.2, 0.8)
DCL::grstrn(4)
DCL::grstrf

DCL::ulxlog('B', 1, 9)
DCL::ulxlog('T', 1, 9)
DCL::uxsttl('B', '[X]', 1.0)

DCL::ulylog('L', 3, 9)
DCL::ulylog('R', 3, 9)
DCL::uysttl('L', '[Y]', 1.0)

DCL::uxmttl('T', 'ULXLOG/ULYLOG', 0.0)

DCL::grcls

program uxyz2

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

対数座標軸を描くには, まず grstrn ルーチンによって対数変換をあら わす変換メソッド(元関数)番号を設定します. 変換メソッド(元関数)番号についてはすでに第 4.1.3節で説明しましたが, 1: 直角一様座標(線形座標), 2: 片対数(y軸)座標, 3: 片対数(x軸)座標, 4: 両対数座標です.

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