7.2 対数座標軸

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

      PROGRAM UXYZ2

      WRITE(*,*) ' WORKSTATION ID (I) ? ;'
      CALL SGPWSN
      READ (*,*) IWS

      CALL GROPN( IWS )
      CALL GRFRM

      CALL GRSWND( 1.E0, 1.E5, 1.E3, 1.E0 )
      CALL GRSVPT(  0.2,  0.8,  0.2,  0.8 )
      CALL GRSTRN( 4 )
      CALL GRSTRF

      CALL ULXLOG( 'B', 1, 9 )
      CALL ULXLOG( 'T', 1, 9 )
      CALL UXSTTL( 'B', '[X]', 1. )

      CALL ULYLOG( 'L', 3, 9 )
      CALL ULYLOG( 'R', 3, 9 )
      CALL UYSTTL( 'L', '[Y]', 1. )

      CALL UXMTTL( 'T', 'ULXLOG/ULYLOG', 0. )

      CALL GRCLS

      END
PROGRAM UXYZ2

\resizebox{10cm}{!}{\includegraphics{uxyz1/uxyz2.eps}}
uxyz2.f: 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以下の場合には, 目盛間隔の狭いところから省か れます.