2013-10-17 30 views
1

我有一些我想繪製在xyz座標系中的實驗值。這些值有一定限制在一定的數量,因此有一個開始和結束。此外,我想繪製他們,他們的最後一點應該以特殊的方式可見。就像具有特殊顏色或特殊點的獨特點。我怎樣才能創建這樣一個行,其結尾是可見的點或類似的東西?Gnuplot最後一點在線

+0

是,其可能的,但你需要提供一些更多的信息。這是可能的,但是你必須以某種方式區分你的'結束'點:它是數據文件中的最後一點嗎?或者它是帶有例如最大'z'值?一條線有多少點?你的數據文件格式如何?等等 – Christoph

+0

邑,它應該是測量數據繪製線的最後一點。它也是x軸值的最大值。 – YaY

回答

0

如果是最後一點,可以用every來選擇它。不幸的是,獲得最後一點沒有「魔術」價值。你必須計算條目的數量並使用該值:

stats 'file.dat' nooutput 
last_index = int(STATS_records - 1) 
splot 'file.dat' with lines, '' every ::last_index with points 

或者,你可以使用using聲明,添加一些過濾,只有您要選擇此單點是真實的。

在最一般的情況下,你會

f(i, x, y, z) = ... 
splot 'file.dat' with lines, '' using (f($0, $1, $2, $3) ? $1 : 1/0):2:3 with points 

此跳過所有點,這f回報0$0column(0)的簡寫形式,它給出了行索引,$1給出了第一列的數值等等。

現在由您來定義一個合適的過濾功能f

如果終點是例如通過與最大x - 值的點,你可以使用:

stats 'file.dat' using 1 nooutput 
f(x) = (x == STATS_max ? 1 : 0) 
splot 'file.dat' with lines, '' using (f($1) ? $1 : 1/0):2:3 with points 

如果您有其他繞圈,就必須相應地定義你的函數f

將標籤添加到這一點,你可以使用label繪圖風格:

splot 'file.dat' with lines, \ 
     '' using (f($1) ? $1 : 1/0):2:3:(sprintf('(%.1f,%.1f,%.1f)', $1, $2, $3)) \ 
     offset char 1,1 point notitle 
+0

邑這也是工作,但另一方面,我也可以簡單地複製粘貼點,並打印出來有點手動。仍然開放的問題如何像變化的數字和不同的最大值一樣舒適地做到這一點。 最大值應繪製,然後稍作標記 – YaY

+0

請參閱我的編輯。無論如何,你需要以某種方式指定這個「終點」是什麼。如果你的問題中包含足夠的信息,這將是很好的... – Christoph