同じ側に何本も軸をかく

同じ側に2本以上の座標軸を別の目盛で描くこともできます.

軸を外側へずらしたい, または, すでに描いた軸の外側にもう一本軸を描きたいというときは, DclShiftAxis ルーチンを呼ぶだけです. 引数は, 場所を指定するおなじみの引数です. これらのルーチンを呼ぶと, 次の軸は内側の軸と重ならない程度に適度に外側に描かれます. これを何回も使えば, 簡単にいくつもの軸を一つの側に描かせることができます.

1つの側に複数の軸を描こうとする時, そのためにいちいちウインドウを設定 し直す必要はありません. この例では, y 座標のウインドウとしてセ氏温度 で0度から100度の範囲で設定したのですが, 換算の便のためにケルビンやカ氏の目盛りもあわせて描いています. ウインドウ設定に影響を与えず, 目盛りだけを変えて複数の座標軸を描きたいときは, オフセット機能を用います. そのためにまず内部変数 'ENABLE_LINEAR_OFFSET'.TRUE. にしておきます. そして, 必要なところで内部変数 'Y_AXIS_OFFSET''Y_AXIS_FACTOR' ( x 軸については 'X_AXIS_OFFSET''X_AXIS_FACTOR') を設定すると, 目盛の位置が 'Y_AXIS_OFFSET'だけ平行移動し, 目盛りの間隔が 'Y_AXIS_FACTOR'倍されます.

many.f90
program many

  use dcl
  integer,parameter :: days=180
  type(dcl_date) :: date

    date%year = 1981
    date%month = 12
    date%day = 1

    call DclOpenGraphics

    call DclSetAxisFactor( 0.7 )
    call DclSetParm( 'ENABLE_LINEAR_OFFSET',.true.)

    call DclNewFrame

    call DclSetWindow( 0.0, real(days), 0.0, 100.0 )
    call DclSetViewPort( 0.4, 0.9, 0.3, 0.8 )
    call DclSetTransFunction

    call DclDrawViewPortFrame( 1 )

    call DclDrawAxisCalendar( 'b', date, nd=days )
    call DclShiftAxis( 'b' )
    call DclDrawAxis( 'b', 20.0, 10.0 )
    call DclDrawTitle( 'b', 'Day Number', 0.0 )
    call DclDrawAxisCalendar( 't', date, nd=days )

    call DclDrawAxis( 'lr', 10.0, 5.0 )
    call DclDrawTitle( 'l', 'Celsius Scale', 0.0 )
    call DclShiftAxis( 'l' )
    call DclSetParm( 'Y_AXIS_OFFSET', 273.15 )
    call DclSetParm( 'Y_AXIS_FACTOR', 1.0 )
    call DclDrawAxis( 'l', 10.0, 5.0 )
    call DclDrawTitle( 'l', 'Kelvin Scale', 0.0 )
    call DclShiftAxis( 'l' )
    call DclSetParm( 'Y_AXIS_OFFSET', 32.0 )
    call DclSetParm( 'Y_AXIS_FACTOR', 1.8 )
    call DclDrawAxis( 'l', 20.0, 10.0 )
    call DclDrawTitle( 'l', 'Fahrenheit Scale', 0.0 )

    call DclDrawTitle( 't', 'DclShiftXAxis', sw=2 )

    call DclCloseGraphics

end program



関連リンク

DclShiftAxis
(UXSAXS,UYSAXS)
座標軸を外側にシフトする.