2016-12-10 51 views
2

時,「x範圍無效」我在linux上學習gnuplot。我data.tsv看起來是這樣的:

1480420804 2016-11-29 04:00:04 -0800 foo1 $123.00 bar1 
1480507205 2016-11-30 04:00:05 -0800 foo2 $124.25 bar2 
1480593604 2016-12-01 04:00:04 -0800 foo3 $122.75 bar3 

我使用#1列(紀元以來秒)爲X,和第4列(價格)爲Y.

這是我的gnuplot腳本:

#!/usr/bin/gnuplot 

set terminal png notransparent interlace size 640,480 
set output "output.png" 
set datafile separator tab 
set xdata time 
set timefmt "%s" 
set format x "%4Y-%02m-%02d" 
plot "data.tsv" using 1:4 title "Blah" 

當我嘗試運行它,我得到以下錯誤:

"./test.gp", line 9: warning: Skipping data file with no valid points 
plot "data.tsv" using 1:4 title "Blah" 
            ^
"./test.gp", line 9: x range is invalid 

但是,如果我從一開始刪除所有的美元符號我的data.tsv文件中的第4列,然後一切正常。

我的問題:有沒有辦法讓gnuplot接受或跳過第4列價格中的「$」?

回答

1

我試圖做(更多或更少)什麼@kebs建議,但它與同失敗「X系列是無效的」,當我的gnuplot內調用它像這樣的錯誤消息:

plot "< sed s/\$//g data.tsv" using 1:4 title "Blah" 

我對sed不太熟悉,所以我試着改用tr,這就像一個魅力。

我的gnuplot腳本的9號線是這樣的:

plot "data.tsv" using 1:4 title "Blah" 

我改成了這樣說:

plot "< cat data.tsv | tr --delete '$'" using 1:4 title "Blah" 
+0

一個sed搜索命令的語法是'S /'(模式)'/ '(替換)'/'。 sed命令's/\ $ // g'意味着搜索('s')正則表達式'\ $'(一個轉義的''',一個字符)並將其替換爲一個空字符串。最後的「g」意味着「全球化」,這不僅僅是線上的第一次出現。 – e0k

1

(這不是一個回答你的問題,但回答你的問題,所以受到歡迎接受另一個答案,如果有人想出了更好的東西)

只是預處理你的數據文件繪製之前,取下$

sed s/\$//g data.tsv >data2.tsv