有幾件事情可能會出錯 - 沒有看到您的數據文件,這是不可能告訴。這是我能想到的把我的頭頂部一對夫婦是:
所有你在第2列的數據點均小於或等於0(您收到錯誤消息,因爲日誌(0)是不確定的)
第一列中沒有任何點數在50和100之間。在這種情況下,您的所有數據點都會被剪切出繪圖範圍,因爲set xrange [50:100]
您的數據文件只有1列......在這種情況下,gnuplot沒有看到任何y值。 (改變plot '../myFile.final' u 1 ...
)
編輯
好了,現在我看到你的數據文件,這個問題肯定是,你已經set xrange [50:60]
但數據的x範圍只從0〜2(gnuplot的開始從數據文件索引0)。解決這個問題的最簡單的方法是使用僞列0.僞列0僅僅是從0開始的行號(這是gnuplot在x軸上繪製的圖形,如果您使用plot 'blah.txt' using 1
這裏是一個示例:
scale_x(x,xmin,xmax,datamin,datamax)=xmin+(xmax-xmin)/(datamax-datamin)*x
plot 'test.dat' using (scale_x($0,50,60,0,2)):1 w lines title "scaled xrange"
請注意,如果你不知道該使用規範是如何工作的,由$開頭數字是對整列元素方面的操作,例如:
plot 'foo.bar' using 1:($2+$3)
將繪製第一列加總和數據文件每行中的第二和第三個元素。
該解決方案假定您知道數據文件中x的最大值(在這種情況下,即3-1 = 2 - [三點,0,1,2])。如果你不知道數據點的數量,你可以使用shell魔法,或直接從gnuplot獲得。第一種方法稍微簡單一些,雖然不如便攜式。我會同時顯示:
XMAX=`wc -l datafile | awk '{print $1-1}'`
scale_x(x,xmin,xmax,datamin,datamax)=xmin+(xmax-xmin)/(datamax-datamin)*x
plot 'test.dat' using (scale_x($0,50,60,0,XMAX)):1 w lines title "scaled xrange"
第二種方式,我們需要通過數據進行兩遍,讓gnuplot的拿起最高:
set term push #save terminal settings
set term unknown #use unknown terminal -- doesn't actually make a plot, only collects stats
plot 'test.dat' u 0:1 #collect stats
set term pop #restore terminal settings
XMIN=GPVAL_X_MIN #should be 0, set during our first plot command
XMAX=GPVAL_X_MAX #should be number of lines-1, collected during first plot command
scale_x(x,xmin,xmax,datamin,datamax)=xmin+(xmax-xmin)/(datamax-datamin)*x
plot 'test.dat' using (scale_x($0,50,60,XMIN,XMAX)):1 w lines title "scaled xrange"
我想的完整性,我應該說,這在gnuplot 4中也更容易實現。6(我沒有它現在安裝的,所以這下一部分只是來自我的文檔的理解):
stats 'test.dat' using 0:1 name "test_stats"
#at this point, your xmin/xmax are stored in the variables "test_stats_x_min"/max
XMIN=test_stats_x_min
XMAX=test_stats_x_max
scale_x(x,xmin,xmax,datamin,datamax)=xmin+(xmax-xmin)/(datamax-datamin)*x
plot 'test.dat' using (scale_x($0,50,60,XMIN,XMAX)):1 w lines title "scaled xrange"
的Gnuplot 4.6看起來很酷。我很快可能會開始玩這個遊戲。
'../ myFile.final'的內容是什麼? – mgilson
它在當前目錄之外!我的內容是真實的! – Mehdi