DclDrawLine ルーチンのかわりに DclDrawMarker を用いると, データ列をマーカー列で表現でき, いわゆる分布図が描けます. 下のプログラム marker.f90 では, 乱数列をもとに (X,Y) のデータをつくり, 分布図を描きます. 9行めと11行めの関数 RNGU3(ISEED) は, DCL(77版)の中の 「その他の基本関数パッケージ」にある, 一様乱数を生成する関数のひとつです. このように, DCLにはグラフィクス以外にもさまざまなパッケージが用意され ていることを心に留めておいて下さい. DclSetScalingPoint でデータの範囲を求め, DclFitScalingParm と DclSetTransFunction で正規化変換を確定し, DclDrawAxis で座標軸を描き, DclDrawMarker を使ってマーカー列を描いています.
ところで, マーカーには, マーカーの種類, 描く線の太さ, マーカーの大きさ の3つの属性があります. DclSetMarkerType, DclSetMarkerIndex, DclSetMarkerSize の各サブルーチンでこれらの属性を変更できます. これらを呼んで思い通りのマーカーが選べたら, DclDrawMarker ルーチンでマーカー列を描くことになります. また, DclDrawMarker内でこれらをすべて指定して描くこともできます.
マーカーの大きさは「正規座標系」で与えられます. 実際に作画できる領域は出力装置によって異なりますが, DCLではそれらに 最大内接する正方形を考えて, 「描画領域」とします. この1辺の長さが1になるように規格化した [0,1] x [0,1] の座標系を正規座標系と呼びます.
| 
program marker
  use dcl
  integer,parameter :: nmax=100
  real :: x(nmax), y(nmax)
!-- データ ----
    iseed = 1
    x(1) = 2.*(rngu3(iseed)-0.5)
    do n=2,nmax
      x(n)   = 2.*(rngu3(iseed)-0.5)
      y(n-1) = x(n)
    end do
    y(nmax) = x(1)
!-- グラフ ----
    call DclOpenGraphics()
    call DclNewFrame
    call DclScalingPoint( x, y )
    call DclFitScalingParm
    call DclSetTransFunction
    call DclSetTitle( 'x-title', 'y-title', 'x-unit', 'y-unit' )
    call DclDrawScaledAxis
    call DclSetMarkerIndex( 5 )
    call DclSetMarkerSize( 0.015 )
    call DclDrawMarker( x(1:25), y(1:25) )
    call DclDrawMarker( x(26:50), y(26:50)  ,type=2 )
    call DclDrawMarker( x(51:75), y(51:75)  ,type=3 )
    call DclDrawMarker( x(75:100), y(76:100),type=4 )
    call DclCloseGraphics
end program
 | 
|  | 
| DclDrawMarker (SGPMU,SGPMZU) | ユーザー座標系でマーカー列を描く. | 
| DclSetMarkerType (SGSPMT) | マーカータイプを設定する. | 
| DclSetMarkerIndex (SGSPMI ) | マーカーのラインインデクスを設定する. | 
| DclSetMarkerSize (SGSPMS) | マーカーの大きさを設定する. |