対数座標を使う

対数座標のグラフを描くには、DclSetTransNumberを呼んで 変換関数番号を指定します (sample12.f90)。 両対数のグラフを描くときは、引数をDCL_LOG_LOGとします。 最初のLOGはx座標が対数、後のLOGはy座標が対数であることを意味しています。 y座標のみ対数座標にし、x座標を線形座標にするには引数をDCL_LIN_LOG、 逆のときはDCL_LOG_LINとします。なにも指定しないときにはDCL_LIN_LIN を指定したことになり、x座標、y座標ともに線形座標になります。

DclSetTransNumberは正規変換を確定する前に呼ばなければなりません。 正規変換を確定するのはDclSetTransFunctionです。 DclDrawScaledGraphにはその確定作業が含まれているので、 DclDrawScaledGraphでグラフを描く場合にはそれより前にDclSetTransNumber を呼びます。
program sample12

  use dcl
  integer,parameter :: n=100
  real(selected_real_kind(12)) :: a, r
  real, dimension(n)           :: x, y

!-- データ ----

    r = 0.2d0
    a = 3.6d0
    r0 = 0.
    do i=1, n
      r = a*r*(1.d0-r)
      r0 = r0 + r*4 - 2.58
      x2 = (i-50)**2
      rexp0 = 4.*i/n
      x(i) = 10**rexp0
      y(i) = 1.e5*exp(-x2) + 10.**r0
    end do
    y(20) = 1.e4
    y(40) = 2.e3
    y(65) = 3.e4
    y(70) = 5.e2

!-- グラフ ----

    call DclOpenGraphics()
    call DclNewFrame

    call DclSetTransNumber( DCL_LOG_LOG )
    call DclDrawScaledGraph( x, y )

    call DclCloseGraphics

end program



DclSetTransNumber
(GRSTRN)
変換関数番号を設定する.
DclSetTransFunction
(GRSTRF)
変換関数を確定する.

* 括弧の中は、対応するf77インターフェイス名.

関連リンク