2012-06-27 87 views
7

我使用以下gnuplot命令創建一個情節:gnuplot,如何標籤只有某些點?

#!/bin/bash 
gnuplot << 'EOF' 
set term postscript portrait color enhanced 
set output 'out.ps' 

plot 'data_file' u 3:2 w points , '' u 3:2:($4!=-3.60 ? $1:'aaa') w labels 

EOF 

其中data_file看起來是這樣的:

O4  -1.20  -0.33  -5.20 
O9.5  -1.10  -0.30  -3.60 
    B0  -1.08  -0.30  -3.25 
B0.5  -1.00  -0.28  -2.60 
B1.5  -0.90  -0.25  -2.10 
B2.5  -0.80  -0.22  -1.50 
    B3  -0.69  -0.20  -1.10 

我想GNUPLOT在列中找到字符串標記所有1,除了其中列4等於-3.60在這種情況下我想aaa條NG。我得到的是$4=-3.60數據點被正確標記爲aaa,但其餘的沒有被標記爲在所有


更新:gnuplot的具有示出使用條件語句,即標籤沒有問題:任何列,但1正確地顯示爲每個點尊重強加的條件的標籤。也就是說,該行顯示列2(numbres)爲點標籤尊重的條件語句:

plot 'data_file' u 3:2 w points , '' u 3:2:($4!=-3.60 ? $2:'aaa') w labels 

更新2:它還在爲點標籤,如果我繪製它作爲一個繪製列1沒問題整個,即不使用一個條件語句。也就是說,該線圖正確所有點標籤欄1(串):

plot 'data_file' u 3:2 w points , '' u 3:2:1 w labels 

所以很明顯的問題是,在使用條件語句一起與琴絃柱。這些單獨使用的任何工作都很好。

回答

5

也許更乾淨的方式,這應該工作。看起來標籤不能顯示一個計算的數字,如果它沒有在字符串中打開。

#!/bin/bash 
gnuplot << 'EOF' 
set term postscript portrait color enhanced 
set output 'out.ps' 

plot 'data_file' u 3:2 w points , '' u 3:2:($4!=-3.60 ? sprintf("%d",$1):'aaa') w labels 

EOF 
+0

此解決方案對我無效。我所得到的是一個單一的標籤('aaa'),它代表OP要刪除的一個標籤...執行'sprintf(「%d」,$ 1)'只適用於列1中的數據是整數。做'sprintf(「%s」,$ 1)'也行不通。我在這裏錯過了什麼嗎? – mgilson

+0

我沒有gnuplot檢查,但如果第一列的第一行不包含數字(在這種情況下不應該需要整個sprintf的東西),可能會有所不同。我承認我在我的數據文件上嘗試過,而不是完全在OP上...我也會嘗試'(($ 4!= - 3.60)?'')。$ 1:'aaa''只強制字符串轉換如果需要的話。 –

+0

下面的工作'($ 4 ne'-3.60'?stringcolumn(1):'')'(stringcolumn是比使用字符串連接更好的方法),但是這個測試真的很脆弱,因爲它正在做一個字符串比較'-3.60'而不是浮點數比較(例如-3.6仍然會在那裏放置一個標籤)。這裏的問題是因爲gnuplot正在繪製標籤,所以期望字段在該字段中(將第4列轉換爲字符串輸入它似乎)。這也使輸出中的那個(空)字符串膨脹它。最好的解決方案是我在下面提出的那個(恕我直言) - 只要移動過濾器,它就可以正常工作 – mgilson

3

這是你想要的嗎?

#!/bin/bash 

gnuplot << 'EOF' 
set term postscript portrait color enhanced 
set output 'out.ps' 
plot 'data_file' u 3:2 w points , \ 
    '' u (($4 == -3.60)? 1/0 : $3):2:1 w labels 

EOF 

所有我在這裏做的設置(x)的點,其中第4列等於-3.6爲NaN(1/0)。由於gnuplot忽略了這些點,生活是美好的。我認爲你的腳本存在的問題是你正在過濾一個gnuplot需要字符串輸入的列 - 儘管我還沒有充分驗證它。我只是將過濾器切換到gnuplot需要數字(x位置)的列,它工作得很好。

+0

Yesss!非常感謝,我已經沒有想法嘗試。乾杯! – Gabriel

+1

@Gaba_p - 很高興幫助。保持(gnu)密謀! :) – mgilson