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 の章を参照のこと.