対数座標軸を描く

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

axis03.f90
program axis03

  use dcl

    call DclOpenGraphics()
    call DclNewFrame

    call DclSetWindow( 1.0e0, 1.0e5, 1.0e3, 1.0e0 )
    call DclSetViewPort( 0.2, 0.8, 0.2, 0.8 )
    call DclSetTransNumber( DCL_LOG_LOG )
    call DclSetTransFunction

    call DclDrawAxisLog( 'bt', 1, 9 )
    call DclDrawTitle( 'b', '[x]', 1.0 )

    call DclDrawAxisLog( 'lr', 3, 9 )
    call DclDrawTitle( 'l', '[y]', 1.0 )

    call DclDrawTitle( 't', 'Log Axis', 0.0, 2 )

    call DclCloseGraphics

end program


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

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

関連リンク