6.1 線形座標軸

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

   #
# uxyz1.rb

require "narray"
require "numru/advanceddcl"
include NumRu::AdvancedDCL
include NMath


#-- graph ---
Dev.open

Frame.new

Fig.window=[-180.0, 180.0, -90.0, 90.0]
Fig.viewport=[0.2, 0.8, 0.3, 0.7]
Fig.transnum=1

Axis::Lin.xaxdv('B', 10.0, 60.0)
Axis::Lin.xaxdv('T', 10.0, 60.0)
Axis::Lin.xsttl('B', 'LONGITUDE', 0.0)
Axis::Lin.xsttl('B', '<- WEST      EAST ->', 0.0)

Axis::Lin.yaxdv('L', 10.0, 30.0)
Axis::Lin.yaxdv('R', 10.0, 30.0)
Axis::Lin.ysttl('L', 'LATITUDE', 0.0)
Axis::Lin.ysttl('L', '<- SH    NH ->', 0.0)

Axis::Lin.xmttl('T', 'UXAXDV/UYAXDV', 0.0)

Dev.close

PROGRAM UXYZ1

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

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

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

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