下のプログラムは, ラベルつきの折れ線を描く例です.
DclSetParmルーチンで内部変数'ENABLE_LINE_LABELING'を .TRUE. にすると, ラベルつき折れ線が描かれます. ラベル付き折れ線と は, 描くべき線分のある長さを1サイクルとして, その一部分に空白域をとり, そこに指定した文字列を描くものです. 描く文字列はDclSetLineTextルーチン で指定します. この例では, まず 'k=1' のラベルをつけて折れ線を描きました.
次に, DclNextLineTextルーチンを呼ぶと, 設定されている文字列の最後の文字の文字番号が1つ増えます. そこで, 2本め, 3本めの折れ線のラベルが 'k=2', 'k=3' と変わります. ラベルの文字列の高さは, DclSetLineTextSizeルーチンで指定できます. 初期値は正規座標系の単位で0.02ですが, 4本めの例ではこれを0.01 として小さめのラベ ルにしています. さらに, ラベル付折れ線に関するパラメータを陽に設定すると, さまざまな変形が可能です. ラベルの間隔は内部変数'LINE_CYCLE_LENGTH'で, ラベルの書き始めは内部変数'LINE_START_POSITION'で, それぞれ調節できます. また, 一定の回転角でラベルを付けることもできます.
program label
use dcl
integer,parameter :: nmax = 40
real,dimension(0:nmax) :: x,y1,y2,y3,y4,y5,y6
x = (/( n,n=0,nmax )/) / real(nmax) ! 0≦x≦1
y1 = sin( 2.*DCL_PI * x ) + 1.5 ! y = sin(2πx)+C
y2 = sin( 2.*DCL_PI * x ) + 1.0
y3 = sin( 2.*DCL_PI * x ) + 0.5
y4 = sin( 2.*DCL_PI * x ) - 0.5
y5 = sin( 2.*DCL_PI * x ) - 1.0
y6 = sin( 2.*DCL_PI * x ) - 1.5
!-- グラフ ----
call DclOpenGraphics()
call DclNewFrame
call DclSetParm( 'ENABLE_LINE_LABELING', .true. ) ! ラベルつき折れ線
call DclSetWindow( 0., 1., -3., 3. ) ! ウィンドウの設定
call DclSetViewPort( 0.2, 0.8, 0.2, 0.8 ) ! ビューポートの設定
call DclSetTransFunction ! 正規変換の確定
call DclDrawScaledAxis ! 座標軸を描く
call DclSetLineText( 'k=1' ) ! ラベルの文字列
call DclDrawLine( x, y1 )
call DclNextLineText ! ラベルの最後の文字番号を増やす
call DclDrawLine( x, y2 )
call DclNextLineText
call DclDrawLine( x, y3, type=2 )
call DclSetLineTextSize( 0.01 ) ! ラベルの文字列の高さ
call DclSetLineText( 'Small Label' )
call DclDrawLine( x, y4, index=2 )
call DclSetLineTextSize( 0.02 ) ! 高さ元に戻す
call DclSetLineText( 'a' )
call DclSetParm( 'LINE_CYCLE_LENGTH', 5. ) ! ラベルの間隔
call DclDrawLine( x, y5, type=2 )
call DclSetLineText( 'zzz' )
call DclSetParm( 'LINE_START_POSITION', 0.9 )! ラベルの書き始め
call DclDrawLine( x, y6, type=4 )
call DclCloseGraphics
end program
|
![]() |
|
DclSetLineText (SGSPLC) |
折れ線のラベルの文字列を設定する. |
|
DclSetLineTextSize (SGSPLS) |
折れ線のラベルの文字高を設定する. |
|
DclNextLineText (SGNPLC) |
折れ線のラベルの最後の文字番号を増やす. |
* 括弧の中は、対応するf77インターフェイス名.