等値線図の設定

等値線図では, 等値線を引く値, ラインタイプやラインインデックス, 線につけられるラベルなどは自動的に設定されます. しかしこれらの設定は自由に変更することができます.

等値線を引く値は, DclSetContourLevelで設定します. 最初の2つの引数が値の最小値と 最大値で, 最後の引数は刻み幅を指定します. これが負の時にはその絶対値程度の本数の等値線を生成します. 最大値と最小値を与える代わりにデータの配列自体を与えれば, それから最大値と最小値をとりだして等値線を生成してくれます.

これらのルーチンでは等間隔のコンターレベルしか生成されません. もしも不等間隔の等値線を指定したい場合や, 特定の値のコンターを追加 したい場合は, DclSetContourLineルーチンで1本1本のコンターを指定します. この場合線の属性やラベルの属性を指定することができます. 逆に, ある1本のコンターを無効に するにはDclDelContourLevelルーチンを呼びます. 下の例では, 0.6の等高線を無効にしています. また, すべての等値線を無効にするにはDclClearContourLevelルーチンを呼びます.

デフォルトではラベル付きの太線が1本おきに引かれますが, これをメジャー ラインとよびます. このメジャーラインに付いているラベルのフォー マットはDclSetContourLabelFormatで設定できます. 引数には指定す るフォーマットを文字型で与えます. DclSetContourLabelFormatは等値線の値を決定するルーチン(DclSetContourLevelなど)の 前に呼ばなければなりません.

下のプログラムを実行すると, 次のようなメッセージが出ます.

*** MESSAGE (UDCNTR) *** INAPPROPRIATE DATA WILL BE MODIFIED INTERNALLY.
*** MESSAGE (-CNT.-) *** Z( 1, 1)= -1.00000000 ===> -1.00000119

DclDrawContourでは, ある格子点での値がコンターレベルと等しい時に, 格子 点値をわずかにずらして作画し, このようなメッセージを出力します. たいて いの場合このメッセージを気にする必要はありません.

set_cont.f90

program set_cont

  use dcl
  integer,parameter :: nx=37, ny=37
  real,parameter :: xmin=0., xmax=360., ymin=-90., ymax=90.
  real,parameter :: pi=3.14159, drad=pi/180
  real :: p(nx,ny)

    do j=1,ny
      do i=1,nx
        alon = ( xmin + (xmax-xmin)*(i-1)/(nx-1) ) * drad
        alat = ( ymin + (ymax-ymin)*(j-1)/(ny-1) ) * drad
        slat = sin(alat)
        p(i,j) = 3*sqrt(1-slat**2)*slat*cos(alon) - 0.5*(3*slat**2-1)
      end do
    end do

    call DclOpenGraphics()
    call DclNewFrame

    call DclSetWindow( xmin, xmax, ymin, ymax )
    call DclSetViewport(  0.2,  0.8,  0.2,  0.8 )
    call DclSetTransFunction

    call DclDrawScaledAxis

    call DclSetContourLabelFormat( '(f4.1)' )
    call DclSetContourLevel( 0., 1.4, 0.2 )
    call DclSetContourLine( -1., 3, 4, 'abc', 0.028 )
    call DclDelContourLevel( 0.6 )
    call DclDrawContour( p )

    call DclCloseGraphics

end program



関連リンク

DclSetContourLevel
(UDGCLA,UDGCLB)
コンターレベル値を設定する.
DclSetContourLine
(UDSCLV)
1本のコンターレベルを設定する.
DclDelContourLevel
(UDDCLV)
1本のコンターレベルを削除する.
DclClearCounourLevel
(UDICLV)
コンターレベルを無効にする.
DclSetContourLabelFormat
(UDSFMT)
コンターラベルのフォーマットを設定する.