等値線図では、等値線を引く値、ラインタイプやラインインデックス、線につけられるラベルなどは自動的に設定される。しかしこれらの設定は自由に変更することができる。
等値線を引く値は、DclSetContourLevelで設定する。最初の2つの引数が値の最小値と 最大値で、最後の引数は刻み幅を指定する。これが負の時にはその絶対値程度の本数の等値線を生成する。最大値と最小値を与える代わりにデータの配列自体を与えれば、それから最大値と最小値をとりだして等値線を生成してくれる。
これらのルーチンでは等間隔のコンターレベルしか生成されない。もしも不等間隔の等値線を指定したい場合や、特定の値のコンターを追加 したい場合は、DclSetContourLineルーチンで1本1本のコンターを指定する。この場合線の属性やラベルの属性を指定することができる。逆に、ある1本のコンターを無効に するにはDclDelContourLevelルーチンを呼ぶ。下の例では, 0.6の等高線を無効にしている。また、すべての等値線を無効にするにはDclClearContourLevelルーチンを呼ぶ。
デフォルトではラベル付きの太線が1本おきに引かれるが、これをメジャー ラインとよぶ。このメジャーラインに付いているラベルのフォー マットはDclSetContourLabelFormatで設定できる。引数には指定す るフォーマットを文字型で与える。DclSetContourLabelFormatは等値線の値を決定するルーチン(DclSetContourLevelなど)の 前に呼ばなければならない。
下のプログラムを実行すると、次のようなメッセージが出る。
DclDrawContourでは、ある格子点での値がコンターレベルと等しい時に、格子 点値をわずかにずらして作画し、このようなメッセージを出力する。たいて いの場合このメッセージを気にする必要はない。*** MESSAGE (UDCNTR) *** INAPPROPRIATE DATA WILL BE MODIFIED INTERNALLY.
*** MESSAGE (-CNT.-) *** Z( 1, 1)= -1.00000000 ===> -1.00000119
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) |
コンターラベルのフォーマットを設定する. |