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
|
![]() |
前節で紹介した UULIN ルーチンのかわりに UUMRK を用いると,
データ列をマーカー列で表現でき, いわゆる分布図が描けます. 次のプログラ
ム STEP2 では, 乱数列をもとに (X,Y) のデータをつくり, 分布
図を描きます. 8行めと10行めの関数 RNGU3(ISEED) は, DCLの中の「そ
の他の基本関数パッケージ」にある, 一様乱数を生成する関数のひとつです.
このように, DCLにはグラフィクス以外にもさまざまなパッケージが用意され
ていることを心に留めておいて下さい. USSPNT でデータの範囲を求め,
USPFIT と GRSTRF で正規化変換を確定し, USDAXS で座標
軸を描き, UUMRK を使ってマーカー列を描いています.
ところで, マーカーには, マーカーの種類, 描く線の太さ, マーカーの大きさ
の3つの属性があります. UUSMKT, UUSMKI, UUSMKS の各サ
ブルーチンでこれらの属性を変更できます. これらを呼んで思い通りのマーカー
が選べたら, UUMRK ルーチンでマーカー列を描くことになります. また,
同様に「上意下達型」のルーチン UUMRKZ もあります.
このプログラム例では, 太い線で初期値の1.5倍の大きさのマーカーを選び,
マーカーの種類は, 最初の25個を初期値の '
' で, 次からの25個ずつ
をそれぞれ,' +', '
', '
' で描いています.
N (整数型) データ数. X, Y (実数型) マーカーを打つ点の(x,y)座標値 を与える配列.
ITYPE (整数型) マーカーの種類. 1:' ', 2:'+', 3:'
', 4:'
', など, フォントテーブル(付録)のDCL文字番号に 対応する文字・記号を描く. (初期値は1)
INDEX (整数型) マーカーを描く線の太さ. 1から順に太くなる. (初期値は1)
RSIZE (実数型) マーカーの大きさ. V-座標系での値で与える. (初期値は0.01)
パラメータは上と同じ.
ここで, マーカーの大きさで出てきた「V-座標系」について説明しておきましょ
う. 実際に作画できる領域は出力装置によって異なりますが, DCLではそれらに
最大内接する正方形を考えて, 「描画領域」とします. この1辺の長さが1にな
るように規格化した
の座標系をV-座標系と呼びます.