的線繼續DISLIN作爲解決方案的討論的東西,與將不適合評論答案.. 。
@M。 S. B. - 你好。我爲你的答案寫作而感到抱歉,但是這些評論太短了,以答案的形式回答一個問題的答案是......無論如何......
DISLIN的快速繪圖功能 - 例程QPLOT只需要三個參數來繪製一條曲線:X數組,Y數組和N數。請參閱手冊的第16章。再加上幾個額外的呼叫來選擇輸出設備並標記軸。我沒有用過這個,所以我不知道自動縮放是多麼的好。
是的,我知道Quickplot和它的相關例程,但它對我的需求來說太固定了(不能改變任何東西),是的,它的自動縮放有點怪異。此外,格拉夫內部的利潤率太大。
或者如果您想使用GRAF的強大功能來設置您的圖框,那麼會有子程序GAXPAR自動生成推薦值。 -2作爲LABDIG的第一個參數自動確定刻度標籤中的位數。
您是否嘗試過這些例程?
對不起,我無法找到你在迪林的索引中所接受的GAXPAR例程。你確定它被稱爲完全一樣嗎?
M.S.B.的回覆:是的,我確信GAXPAR的拼寫。這是DISLIN 9.5 PDF手冊第4章中的最後一個例程。也許這是一個新的例程?也有自動縮放另一條道路:SetScl可以 - 參見第6章
到目前爲止,我已經(從一些「鴨磁帶」解決方案分開)做什麼
use dislin; implicit none
real, dimension(5) :: &
x = [.5, 2., 3., 4., 5.], &
y = [10., 22., 34., 43., 15.]
real :: xa, xe, xor, xstp, &
ya, ye, yor, ystp
call setpag('da4p'); call metafl('xwin');
call disini(); call winkey('return');
call setscl(x,size(x),'x');
call setscl(y,size(y),'y')
call axslen(1680,2376) !(8/10)*2100 and 2970, respectively
call setgrf('name','name','line','line')
call incmrk(1); call hsymbl(3);
call graf(xa, xe, xor, xstp, ya, ye, yor, ystp); call curve(x,y,size(x))
call disfin()
end
這將把極端值放在軸上。你是否知道我怎麼能在外面有一個「主要的蜱蟲邊緣」,以便在曲線和軸線之間放置一些區域(同時仍然保持setscl的效果)?
即使您不喜歡內置的自動縮放功能,如果您已經在使用DISLIN,自動縮放比從MATLAB調用Fortran更容易。您可以使用Fortran內部函數minval和maxval在數據中查找最小值和最大值,而不是編寫一個子例程以向外舍入爲「好」圓值。同樣,一個子程序來決定刻度間距。
這實際上不是那麼容易完成(並且想法證明我錯了會很樂意欣賞)。或者我應該說,如果你知道你的價值觀所在的粗略範圍,這很容易。但是,如果你不這樣做,你不知道你的 值是否會橫亙在13-34的範圍內,或在1330-3440,然後...
...如果我在這裏完全錯誤的軌道上,請解釋你是否改變了一些不同的東西。我的英語有點欠缺,所以我只能希望以上是可以理解的。
在確定圓圖開始/結束值的子例程中,您可以將實際的最小/最大值縮放到始終在1到10之間,然後讓表格選取精美的圓整值,然後不縮放回正確的範圍。
-
@到「M.S.B答覆:是的,我確信拼寫...」*****我道歉。這確實出現在印刷手冊中 - 不幸的是,出於某種原因,也不在在線手冊的索引中(我正在閱讀)。無論如何,雖然它似乎有一些與數字有關的怪癖,但它的確比我迄今爲止所提出的任何替代方法都更好。現在它會做。謝謝M. S. B. – Rook 2010-06-02 16:20:48