8.2 右も左も日付軸

これまで, 同じ座標軸作画ルーチンを呼んでも, 下側と左側にはラベルを描き, 上側と右側は目盛だけでラベルは描きませんでした. 左右両方に異なったラベ ルの座標軸を描きたい時にはどうすれば良いのでしょう(UXYZ6).

座標軸のラベルを描くか描かないかは, UZPACK の管理する内部変数によって 制御されています. この例のように, 右側の座標軸に関しては 'UZLSET' ルーチンで 'LABELYR' という内部変数を .TRUE. に することによって, 右側の座標軸についてもラベルが描けます. 左側は 'LABELYL', x軸の上と下はそれぞれ, 'LABELXT', 'LABELXB' によって制御されています.

      PROGRAM UXYZ6

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

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

      CALL GROPN( IWS )
      CALL UZFACT( 0.8 )
      CALL GRFRM

      CALL GRSWND( -180., 180., RND, 0.0 )
      CALL GRSVPT(   0.2,  0.8, 0.2, 0.8 )
      CALL GRSTRN( 1 )
      CALL GRSTRF

      CALL UXAXDV( 'B', 10., 60. )
      CALL UXAXDV( 'T', 10., 60. )
      CALL UXSTTL( 'B', 'LONGITUDE', 0. )

      CALL UCYACL( 'L', ID0, ND )

      CALL UZLSET( 'LABELYR', .TRUE. )
      CALL UYAXDV( 'R', 20., 100. )
      CALL UZISET( 'IROTCYR', -1 )
      CALL UYSTTL( 'R', 'DAY NUMBER', 0. )

      CALL UXMTTL( 'T', 'UXAXDV/UCYACL', 0. )

      CALL GRCLS

      END
PROGRAM UXYZ6

\resizebox{10cm}{!}{\includegraphics{uxyz2/uxyz6.eps}}
uxyz6.f: frame1

右側の座標軸は UYAXDV によって描きました. 13行めで UYMINRND(=720), UYMAX が 0.0 とウインドウを指定したので, ラ ベルの値が上から下に増えています. また, UZISET ルーチンで内部変 数 'IROTCYR' を-1にしたので, UYSTTL で描いた 'DAY NUMBER' という座標軸のタイトルも180度回転しています. この回転角の値は, 90度を単位とする整数値で指定します.

左側の座標軸は UCYACL ルーチンで描いたのですが, この例からわかる ように, 日数のラベルが描けないような場合には,適当に判断して月と年の目 盛だけが描かれます. なお, UCXACL/UCYACL の下位ルーチンを呼ぶこと によって, 日, 月, 年の座標軸を別々に描くこともできます.

なお, この例では10行めでUZFACT を呼んで, 文字や目盛のサイズを全 体的に小さく(デフォルトの0.8倍)して座標軸を描いています.