2016-12-10 53 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