最後のプログラム UXYZ8 では, 同じ側に2本以上の座標軸を別の目盛
で描こうという時の実例です. 
軸を外側へずらしたい, または, すでに描いた軸の外側にもう一本軸を描きた
いというときは, x軸については UXSAXS ルーチンを, y軸について
は UYSAXS ルーチンを呼ぶだけです. 引数は, 場所を指定するおなじみ
の引数です. これらのルーチンを呼ぶと, 次の軸は内側の軸と重ならない程度
に適度に外側に描かれます. これを何回も使えば, 簡単にいくつもの軸を一つ
の側に描かせることができます.
1つの側に複数の軸を描こうとする時, そのためにいちいちウインドウを設定 し直す必要はありません. この例では, y座標のウインドウとしてセ氏温度 で0度から100度の範囲で設定したのですが, 換算の便のためにケルビンやカ氏 の目盛りもあわせて描いています. ウインドウ設定に影響を与えず, 目盛りだ けを変えて複数の座標軸を描きたいときは, オフセット機能を用います. その ためにまず UZLSET ルーチンで内部変数 'LOFFSET' を .TRUE. にしておきます. そして, 必要なところで, UZRSET ルーチン で内部変数 'YOFFSET' と 'YFACT' (x軸については 'XOFFSET' と 'XFACT')を設定すると, 目盛の位置が 'YOFFSET' だけ平行移動し, 目盛の間隔が 'YFACT' 倍されます.
program axis05
  use dcl
  real,parameter :: rlat1=20., rlat2=80., dlat1=5., dlat2=10.
  integer,parameter :: days=180
  type(dcl_date) :: date
    date%year = 1981
    date%month = 12
    date%day = 1
    call DclOpenGraphics()
    call DclSetAxisFactor( 0.7 )
    call DclNewFrame
    call DclSetWindow( 0.0, real(days), rlat1, rlat2 )
    call DclSetViewPort( 0.2, 0.8, 0.4, 0.8 )
    call DclSetTransFunction
    call DclDrawViewPortFrame( 1 )
    call DclShiftAxis( 'b' )
    call DclDrawAxisCalendar( 'b', date, nd=days )
    call DclShiftAxis( 'b' )
    call DclDrawAxis( 'b', 20.0, 10.0 )
    call DclDrawTitle( 'b', 'Day Number', 0.0 )
    call DclShiftAxis( 't' )
    call DclDrawAxisCalendar( 't', date, nd=days )
    call DclShiftAxis( 'l' )
    call DclDrawAxis( 'l', dlat2, dlat1 )
    call DclShiftAxis( 'r' )
    call DclDrawAxis( 'r', dlat2, dlat1 )
    call DclDrawTitle( 'l', 'Latitude', 0.0 )
    call DclDrawTitle( 't', 'DclShiftAxis', 0.0, 2 )
    call DclCloseGraphics
end program
 | 
![]()  |