等値線図の設定

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

等値線を引く値は、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


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

関連リンク