【问题标题】:How to use GnuPlot to plot a time series chart from a CSV file date and time stored in separate columns with double quote?如何使用 GnuPlot 从存储在带有双引号的单独列中的 CSV 文件日期和时间绘制时间序列图?
【发布时间】:2012-11-15 13:48:20
【问题描述】:

我想用 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

但它无法识别时间格式。

如何识别两个分隔列中的时间值,使用双引号和逗号分隔符?

感谢您的帮助。

托马斯

【问题讨论】:

    标签: csv gnuplot


    【解决方案1】:

    如果引号是问题所在,并且您在启用管道的 posix 系统上,您可以轻松删除它们:

    plot '< sed -e s/\"//g test.dat' using 2:4:5
    

    请注意,using 规范也发生了变化(2:4:5 而不是 2:3:4),因为您的时间格式需要 2 列


    请注意,我认为引号没有问题:

    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 制作相同的图——您实际上从未将第 5 列用于此处的任何内容。

    【讨论】:

    • 感谢您的快速回答。我在原始数据上尝试了你的最后一个命题(带双引号),我得到一个错误: 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 警告:空 x 范围 [0:0],调整为 [-1:1] 显示的日期是 2000 年左右/01/01,而不是 2012/09/29。我在 windows XP(法语版)上使用 gnuplot V4.6:本地设置有问题吗?任何的想法 ?很抱歉布局不佳,我不习惯使用这些 cmets。托马斯
    • 你是对的。我在我的脚本中忘记了set xdata time,所以 gnuplot 只是解析 12 并且我看起来不够近而无法注意到。不过,这一点仍然存在。我发布的案例我已经测试过(这次更仔细),它似乎适用于 gnuplot 4.4.2
    猜你喜欢
    • 1970-01-01
    • 2016-01-28
    • 2019-04-17
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 1970-01-01
    • 2016-02-14
    相关资源
    最近更新 更多