2017-04-21 38 views
0

我試圖從包含時間戳和註釋作爲字符串和各種其他數據的文件中繪製一些數據。Gnuplot用變化的距離繪製帶標記的點

到目前爲止,最令人興奮的是將所有評論與時間標記爲標籤,但我正在尋找某種智能間隔,以便評論不重疊。

我還在尋找過濾評論的方法。我有另一個欄目,指定評論是否應該隱藏。我使用這個Statment爲conditional plotting

plot 'data' using $1:0:($7==0?$6:" ") 

它過濾數據點,但不是顯示字符串($ 6)它顯示0,如果Statment是真實的。

我想我可以通過手動操作時間來解決間距問題,如果距離太小,但工作過濾器會有很大的幫助。

有沒有人處理過這類問題?到目前爲止,我在下面添加了一張照片。

我欣賞任何建議。謝謝。

Plot

回答

0

要使用using表達式中的文本字段,必須使用stringcolumn函數。對於你的例子,像

plot 'data' using $1:(0):($7==0 ? stringcolumn(6) : " ") with labels 

應該適用於你的問題的過濾方面。

+0

完美地工作!隨着有條件的標籤繪製,間距不再那麼重要,因爲評論量急劇減少。非常感謝你的幫助! –

0

爲了使您的標籤不重疊,那旋轉下來,並進行與rotate by -60的方式嗎?

默認的底部邊距會將它們關閉,在這種情況下,您需要使用類似set bmargin 10的東西來擴大它。

要有條件地繪製,當條件爲假時,您需要生成一個數字錯誤,而不僅僅是一個零值。最簡單的方法可能是:

plot 'data' using $1:0:($7==0?$6:NaN) 

雖然在老腳本常常可以看到一些用於生成NaN1/0,如:

plot 'data' using $1:0:($7==0?$6:1/0) 

而是有條件繪製的,你可以設置明確的標籤,如:

set xdata time 
set timefmt "%d/%m/%y\t%H%M" 
set format x "%d/%m\n%H:%M" 
set xrange [ "1/6/93":"1/11/93" ] 
set grid 
set style data fsteps 
set bmargin 10 
set label 1 'Look at the spike here' at '01/10/93',0.05 rotate by -45 point 
# https://github.com/gnuplot/gnuplot/blob/master/demo/timedat.dat 
plot 'timedat.dat' using 1:4 notitle 

產生 resulting plot

+0

不知何故gnuplot不喜歡與條件繪圖相結合的字符串輸出。使用明確的標籤是一個不錯的選擇,但評論的數量可能還會增加。感謝您的回覆 –