program sample_1d05
use dcl
integer, parameter :: n=200, m=10
real, dimension(n) :: x, y
real, dimension(m) :: a
a = (/( (-1)**j *2./((j*2-1)*DCL_PI), j=1, m) /)
dt = 1./(n-1)
x = (/( dt*(i-1), i=1, n )/)
do i=1, n
y(i) = 2*sum(a*cos((/( 2*DCL_PI*dt*(i-1)*(j*2-1), j=1, m )/)) )
end do
!-----------------------------------------------------------------------
call DclOpenGraphics
call DclNewFrame
! --- x axis ---
call DclSetParm('AXIS:uyuser' , 0.)
call DclSetParm('SCALE:cxside' , 'u')
! --- y axis ---
call DclSetParm('AXIS:irotlyl' , 1)
call DclSetParm('AXIS:icentyl' , 0)
call DclSetParm('SCALE:cyside' , 'l')
! --- etc. ---
call DclSetParm('AXIS:inner' , -1)
call DclSetParm('SCALE:cblkt' , '[]')
call DclSetTitle('Time', 'Voltage', 'Sec', 'mV')
call DclDrawScaledGraph(x, y)
call DclCloseGraphics
end program
|
![]() |
とにかくデータは描けるようになったが, いつも真四角な箱型の座標軸ではつまらない. と, 人間だんだん欲が出てくることをUSPACKはちゃんと見通している. というより, USPACKは座標軸の細かな設定に関しては, かなりの部分でUXPACK/UYPACKに「よきに計らえ」と任せているので, 細かなことはこれらをコントロールするUZPACKにお願いすれば, いろいろと面倒を見てくれる. 裏を返せば, 細かいことまで思い通りにしたければUSPACKを呼ぶ前に, UZPACKにちゃんと根回しをしておかなければならない.
まず, 座標軸を描く位置は USPACK が管理しているので, USCGET/USCSETの内部変数'CXSIDE'(X軸)と 'CYSIDE'(Y軸)を指定する. 'CXSIDE', 'CYSIDE'は長さ2の文字型変数で, 'CXSIDE'は'T'(Top), 'B'(Bottom), 'U'(User)のうち2文字まで, 'CYSIDE'は'R'(Right), 'L'(Left), 'U'(User)のうち2文字まで指定でき, 初期値はそれぞれ'BT', 'LR'である. これらの文字は1文字づつ座標軸ルーチン (UXAXDV/UYAXDV)に渡される. 後はこれらのルーチンの仕事である.
uspk07.fの様に'CXSIDE'に'U'を指定した場合には, UXPACKに「ユーザー定義の位置」を通知しておかなければUXPACKが困ってしまう. そこでUZRSETで内部変数'UYUSER'を0.にして, X軸をY=0の位置に描くように指定する. この時, USGRPHは Y軸のスケーリングに関して, X軸を描く位置 (Y=0) を含めてスケーリングするので, 仮にデータが0を含まなくても 座標軸がとんでもないところに描かれることはない.
その他, uspk07.fの中では UZISETで 'IROTLYL'と'ICENTL'を変更して, Y軸のラベルを軸に平行にし, 'INNER'を-1にして目盛を外向きにしている.
なお, 座標軸のタイトルとサブラベルに関してはUSPACKが管理しており, 'CXSIDE', 'CYSIDE'に指定された最初の文字の 位置にこれらを描くことになっている. (サブラベルの向きはUZISETの 'IROTLzs'に従う) また, サブラベルの文字を囲む括弧が気に入らない場合には, USCSETで内部変数'CBLKT'を指定することによって 変更することができる. この変数に空白を指定すると括弧は描かない.
これらUSpSET/USCSET及び UZpSETで設定された 座標軸のスタイルに関するパラメタは, 再設定されるまで有効である. タイトルとスケーリングに関するパラメタは GRFRMまたは GRFIGによって初期化される. 詳しい内部変数名およびリセットされるタイミングは, 「GRPH2」マニュアルの USPACK の章を参照のこと.