7.1 線形座標軸

まず, 最も簡単なプログラム例 UXYZ1 を見てみましょう. UXPACK/UYPACK のサブルーチンを使って, x軸, y軸ともに線形座標軸(均等 な目盛り)を描き, それぞれの軸には目盛りとラベル(目盛りのところにつける 数字), およびタイトル(軸の説明)をつけます. また, 図のタイトルもつける ことにします.

      PROGRAM UXYZ1

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

      CALL GROPN( IWS )
      CALL GRFRM

      CALL GRSWND( -180., 180., -90., 90. )
      CALL GRSVPT(   0.2,  0.8,  0.3, 0.7 )
      CALL GRSTRN( 1 )
      CALL GRSTRF

      CALL UXAXDV( 'B', 10., 60. )
      CALL UXAXDV( 'T', 10., 60. )
      CALL UXSTTL( 'B', 'LONGITUDE', 0. )
      CALL UXSTTL( 'B', '<- WEST      EAST ->', 0. )

      CALL UYAXDV( 'L', 10., 30. )
      CALL UYAXDV( 'R', 10., 30. )
      CALL UYSTTL( 'L', 'LATITUDE', 0. )
      CALL UYSTTL( 'L', '<- SH    NH ->', 0. )

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

      CALL GRCLS

      END

PROGRAM UXYZ1

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

まず, 座標軸関連のパッケージを使用するときには, ウインドウとビューポー ト(第4.1.2節)が適切に設定されていなければなりません. そし て, 座標軸の作画を行なうにあたって最も基本的なことは, 1本の座標軸(1本 の軸とそれに付ける目盛りおよびラベルによって構成される)を描くために作 画ルーチンを1回呼ぶということです. この例では, 上下左右あわせて4回作画 ルーチン(x軸は UXAXDV, y軸は UYAXDV)を呼んでいます. 最初の引数 'B', 'T', 'L', 'R'によって, それぞ れ, 下, 上, 左, 右側の軸を描画することを指定します. 座標軸を描くこれ らの場所は,ウインドウとビューポートを設定した矩形領域のちょうど境界線 上になります. 次の2つの引数では, 短い目盛りと長い目盛りをどんな間隔で 打つかをU-座標系の値で指定します. ラベルは, 長い目盛りのところにだけ描 かれます.

軸につけるタイトルおよび図のタイトルも, それぞれの軸についてタイトル描 画ルーチンを呼びます. 小さめの文字でタイトルを描きたいときは UXSTTL, UYSTTL ルーチンを,大きめの文字で描きたいときには UXMTTL, UYMTTL ルーチンを用います. 最初の引数によってタイトルを つける軸の場所を指定します. 2番目の引数はタイトルとして描く文字列です. 最後の引数では, タイトルを描く位置を-1.0から1.0までの実数値で指定し ます. たとえばx軸については, -1.0: 左寄せ, 0.0: 中央合わせ, 1.0: 右寄せとなり, またy軸については, -1.0: 下寄せ, 0.0: 中央合わせ, 1.0: 上寄せとなります. この例の下側x軸や左側y軸のように, 同じ軸に 対して2回以上タイトル描画ルーチンを呼んだときには, タイトルが重ならな いようにだんだんと外側の方へずらして描かれます.

言われるままに作画してみて, 「はて, タイトルやラベルの大きさ, 目盛の長 さなどは一体どのように決まっているのだろか?」と,不思議に思うかもしれま せん. じつはこれらの属性は, UZPACK の管理する内部変数を参照して決めら れているのです. ふつうの用途には, これらで充分に満足できる座標軸が作 画できるでしょう. タイトルの大きさやその描く向きなどを指定して独自の座 標軸を作ることもできますが, それは次章にまわしましょう.