長年にわたるデータを解析した人なら, 日付軸をつけることの面倒くささは十 分ご承知でしょう. UCPACK を用いると, 閏年まで考慮した完璧な日付軸を容 易に作画することができます(uxyz3).
# uxyz3.rb require "narray" require "numru/dcl" include NumRu include Math id0 = 19960101 nd = 90 #-- graph --- iws = (ARGV[0] || (puts ' WORKSTATION ID (I) ? ;'; DCL::sgpwsn; gets)).to_i DCL::gropn iws DCL::grfrm DCL::grswnd(0.0, nd, -90.0, 90.0) DCL::grsvpt(0.2, 0.8, 0.2, 0.8) DCL::grstrn(1) DCL::grstrf DCL::ucxacl('B', id0, nd) DCL::ucxacl('T', id0, nd) DCL::uyaxdv('L', 10.0, 30.0) DCL::uyaxdv('R', 10.0, 30.0) DCL::uysttl('L', 'LATITUDE', 0.0) DCL::uxmttl('T', 'UCXACL/UYAXDV', 0.0) DCL::grclsprogram uxyz3
まず, 作画しようとする座標軸については, 日数を単位として正規化変換を設
定する必要があります. また, 座標軸の作画は, U-座標系において0に相当す
る位置からおこなわれますから, この例の場合のように1996年1月1日から3月
31日まで91日分をビューポートいっぱいに割り当てたいときには, ウインドウ
の両端値を uxmin が 0.0, uxmax が rnd(= 90)と指定し
ます(12行め).
日付に関する座標軸は, メソッド(元サブルーチン) ucxacl, ucyacl で簡単に 描けます. 最初の引数では, これまで通り, 座標軸を描く場所を指定します. 2番めの引数 id0 は起日, つまり座標軸を描きはじめる最初の日です. 3行めのパラメータ文をみれば明らかなように, 8桁の整数(yyyymmdd)で指定 します. yyyyが年, mmが月, ddが日で, この場合 id0=19960101 ですから, 起日は1996年1月1日となります. 最後の引数では, 何日間分を描く かを指定します.