8.4 同じ側に何本もの軸を

最後のプログラム UXYZ8 では, 同じ側に2本以上の座標軸を別の目盛 で描こうという時の実例です.

軸を外側へずらしたい, または, すでに描いた軸の外側にもう一本軸を描きた いというときは, x軸については UXSAXS ルーチンを, y軸について は UYSAXS ルーチンを呼ぶだけです. 引数は, 場所を指定するおなじみ の引数です. これらのルーチンを呼ぶと, 次の軸は内側の軸と重ならない程度 に適度に外側に描かれます. これを何回も使えば, 簡単にいくつもの軸を一つ の側に描かせることができます.

1つの側に複数の軸を描こうとする時, そのためにいちいちウインドウを設定 し直す必要はありません. この例では, y座標のウインドウとしてセ氏温度 で0度から100度の範囲で設定したのですが, 換算の便のためにケルビンやカ氏 の目盛りもあわせて描いています. ウインドウ設定に影響を与えず, 目盛りだ けを変えて複数の座標軸を描きたいときは, オフセット機能を用います. その ためにまず UZLSET ルーチンで内部変数 'LOFFSET'.TRUE. にしておきます. そして, 必要なところで, UZRSET ルーチン で内部変数 'YOFFSET''YFACT' (x軸については 'XOFFSET''XFACT')を設定すると, 目盛の位置が 'YOFFSET' だけ平行移動し, 目盛の間隔が 'YFACT' 倍されます.

      PROGRAM UXYZ8

      PARAMETER( ID0=19911201, ND=180, RND=ND )

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

      CALL GROPN( IWS )
      CALL UZFACT( 0.7 )
      CALL UZLSET( 'LOFFSET', .TRUE. )
      CALL GRFRM

      CALL GRSWND( 0.0, RND, 0.0, 100. )
      CALL GRSVPT( 0.4, 0.9, 0.3,  0.8 )
      CALL GRSTRN( 1 )
      CALL GRSTRF

      CALL UCXACL( 'B', ID0, ND )
      CALL UCXACL( 'T', ID0, ND )
      CALL UXSAXS( 'B' )
      CALL UXAXDV( 'B', 10., 20. )
      CALL UXSTTL( 'B', 'DAY NUMBER', 0. )

      CALL UYAXDV( 'L', 5., 10. )
      CALL UYAXDV( 'R', 5., 10. )
      CALL UYSTTL( 'L', 'CELSIUS SCALE', 0. )

      CALL UYSAXS( 'L' )
      CALL UZRSET( 'YOFFSET', 273.15 )
      CALL UZRSET( 'YFACT  ', 1. )
      CALL UYAXDV( 'L', 5., 10. )
      CALL UYSTTL( 'L', 'KELVIN SCALE', 0. )

      CALL UYSAXS( 'L' )
      CALL UZRSET( 'YOFFSET', 32. )
      CALL UZRSET( 'YFACT  ', 1.8 )
      CALL UYAXDV( 'L', 10., 20. )
      CALL UYSTTL( 'L', 'FAHRENHEIT SCALE', 0. )

      CALL UXSTTL( 'T', '(LOFFSET=.TRUE.)', 0. )
      CALL UXMTTL( 'T', 'UXSAXS/UYSAXS', 0. )

      CALL GRCLS

      END
PROGRAM UXYZ8

\resizebox{10cm}{!}{\includegraphics{uxyz2/uxyz8.eps}}
uxyz8.f: frame1
\fbox{\parbox{14.75cm}{\fbox{\parbox{14.5 cm}{\vspace{1em}\begin{center}\par......x/doc/misc1/gaiyou/file.tex)を御覧下さい.\par }\end{center}\vspace{1em}}}}}