ラベル付き折れ線

下のプログラムは, ラベルつきの折れ線を描く例です.

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'で, それぞれ調節できます. また, 一定の回転角でラベルを付けることもできます.

label.f90
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インターフェイス名.