2013-09-24 118 views
1

靈感來自設置鏈接的另一個答案我想繪製圖形並顯示不同的縮放軸。gnuplot:強制y2座標軸位置上的位置

set grid mytics 
set xrange[1:5] 
set yrange[0:3] 
set y2range[0:30] 
set xlabel "a" 
set ylabel "b" 
set ytics 
set y2label "c" 
set mytics 2 

ca = 0.05 
cb = 0.5 

f(x) = sin(x*pi/180)*cb *1000 
i(x) = asin(x/1000/cb)/pi*180 
set link y2 via f(y) inverse i(y) 

pl asin(ca /x)/pi*180 title "a" 

它繪製預期劇情和軸,但我想那是什麼在Y2軸抽動是準確的ytics(儘管它們是不全面的數字)

回答

1

沒有選項把例如6在一個軸上平均分佈抽搐(就像使用set my2tics 7一樣)。但是您可以手動添加標籤,因爲您知道功能範圍。

首先你需要清除所有自動y2tics

set y2tics (f(0)) 

然後你就可以在一個循環中設置的所有主要和次要的抽動:

do for [i=0:6] { 
    set y2tics add (f(i/2.0)) 
    set y2tics add ('' f(i/2.0 + 0.25) 1) 
} 

注意,與浮子增量循環沒有按沒有工作。

所以你完整的腳本是這樣的:

reset 
set grid mytics 
set xrange[1:5] 
set yrange[0:3] 
set y2range[0:30] 
set xlabel "a" 
set ylabel "b" 
set ytics nomirror 
set y2label "c" 
set mytics 2 

ca = 0.05 
cb = 0.5 

f(x) = sin(x*pi/180)*cb *1000 
i(x) = asin(x/1000/cb)/pi*180 
set link y2 via f(y) inverse i(y) 

set format y2 '%.2f' 
set y2tics (f(0)) # clear all automatic y2tics 
do for [i=0:6] { 
    set y2tics add (f(i/2.0)) 
    set y2tics add ('' f(i/2.0 + 0.25) 1) 
} 

pl asin(ca /x)/pi*180 title "a" 

與結果:

enter image description here

有一種方法,只要設置y2tics獨立的yrange的AS號主要抽動是已知的。首先您使用unknown終端進行繪圖,之後您可以訪問yrange值作爲變量GPVAL_Y_MINGPVAL_Y_MAX。不幸的是,一個不能訪問軸的抽動次數:再次

... 
set link y2 via f(y) inverse i(y) 

set terminal push # save current terminal 
set terminal unknown 
pl asin(ca /x)/pi*180 title "a" 

num_tics = 7 
set format y2 '%.2f' 
set y2tics (f(GPVAL_Y_MIN)) # clear all automatic y2tics 
Y0 = GPVAL_Y_MIN 
DY = (GPVAL_Y_MAX - GPVAL_Y_MIN)/(num_tics-1) 
do for [i=0:(num_tics-1)] { 
    set y2tics add (f(Y0+i*DY)) 
    set y2tics add ('' f(Y0+(i+0.5)*DY) 1) 
} 

set terminal pop # restore terminal 
replot 
+0

感謝,我希望有一個更好的解決方案是獨立的範圍,但它會工作的感謝 –

+0

@vlad_tepesch你可以把它獨立於實際範圍,但必須知道抽搐的數量。見編輯的答案。 – Christoph