如何使用GnuPlot从CSV文件中的分开存储日期和时间的双引号列绘制时间序列图表?

4

我想要将数据以时间值为x轴绘制图表。 csv文件如下所示

"","12/09/29","00:19:43","  1787","    12","12"
"","12/09/29","00:19:48","  1787","    12","12"
"","12/09/29","00:19:53","  1785","    13","12"
"","12/09/29","00:19:58","  1785","    12","12"

这里的问题在于双引号的使用。我尝试了这个:
set timefmt '"%y/%m/%d","%H:%M:%S"'
set datafile separator ","
plot 'myFile.csv' using 2:3:4 with lines

但它无法识别时间格式。

我该如何从两个分开的带有双引号和逗号分隔符的列中识别时间值?

谢谢您的帮助。

Thomas

1个回答

2
如果引号是问题,并且您使用启用了管道的posix系统,您可以轻松地将其删除:
plot '< sed -e s/\"//g test.dat' using 2:4:5

请注意,由于您的时间格式采用2列,因此using规范也发生了变化(从2:3:4更改为2:4:5)。
请注意,我认为引号并不成问题。
set datafile sep ','
set xdata time
set timefmt '%y/%m/%d,%H:%M:%S'  #no quotes in timefmt -- Gnuplot removes them when parsing the datafile.
plot 'test.dat' using 2:4:5 with lines

对我来说可行。

所以我认为问题在于您使用了指向第三列(包含时间信息)而不是第四列的规范。最后,您可以使用using 2:4制作相同的图表 -- 在这里您实际上从未使用第五列。


谢谢您的快速回复。我尝试了您上次提供的建议,使用我的原始数据(带有双引号),但是出现了错误:gnuplot> set xdata time gnuplot> set datafile sep ',' gnuplot> set timefmt '"%y/%m/%d","%H:%M:%S"' gnuplot> plot 'essai.txt' using 2:4 with lines Warning: empty x range [0:0], adjusting to [-1:1] 显示的日期大约是2000/01/01,而不是2012/09/29。我正在使用gnuplot V4.6在Windows XP上(法语版本):是否存在本地设置问题? 有什么想法吗?对于排版不佳,我很抱歉,我不太熟悉这些评论。 Thomas - user1826802
你说得对。我在脚本中忘记了“set xdata time”,所以gnuplot只是解析了12,而我没有仔细看到。不过重点仍然存在。我已经测试了我发布的这个案例(这次更加仔细),似乎在gnuplot 4.4.2上可以工作。 - mgilson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接