【问题标题】:How to use GnuPlot to plot a time series chart from a CSV file date and time stored in separate columns?如何使用 GnuPlot 从存储在单独列中的 CSV 文件日期和时间绘制时间序列图?
【发布时间】:2012-06-06 19:41:45
【问题描述】:

让我们把它作为数据文件:

2012-06-01, 01:00, 1
2012-06-01, 02:00, 2
2012-06-01, 03:00, 4
2012-06-01, 04:00, 3
...
2012-06-02, 01:00, 5
2012-06-02, 02:00, 2
2012-06-02, 03:00, 1
2012-06-02, 04:00, 1
...

我知道如何设置 timefmtxdata 在日期和时间用单个字段表示时绘制时间序列,但是当时间和日期存储在不同的列中时如何使用 GnuPlot 绘制?

【问题讨论】:

    标签: datetime csv gnuplot


    【解决方案1】:

    如果它们是空格的话,与你的想法并没有太大的不同......

    set timefmt '%Y-%m-%d, %H:%M'
    set xdata time
    set datafile sep ','
    plot 'test.dat' u 1:3 w lines
    

    我不知道您之前是否使用过带有空格的 timefmt(对于常规空格分隔的数据文件),但在这种情况下,您可以指定时间数据开始的列——gnuplot 会自动查看多少列它需要填写全时格式。当然,您需要一个完整的使用规范(在这种情况下,这意味着指定数据位于第 3 列——注意,不是您所期望的第二列)。

    (在 gnuplot 4.4 -- OS X 上测试)

    【讨论】:

    • 现在我使用逗号分隔的数据文件,ISO-8601 日期时间格式(如 2012-06-06T14:54Z)并且根本没有空格。但是我需要在逗号分隔的文件中支持空格分隔和逗号分隔的日期时间值。谢谢你的解决方案,我试试看。
    【解决方案2】:

    运行 Arch Linux Gnuplot 4.6 补丁级别 3

    我无法让 mgilson 的代码 sn-p 工作。 我需要设置xrange,然后它才会停止抱怨

    all points y value undefined!
    

    我不得不

    set xrange["2012-06-01, 01:00":"2012-06-02, 05:00"]
    

    终于有了一个漂亮的情节

    【讨论】:

    • 请将其作为对 mgilson 答案的评论发布,它本身并不是一个答案。对我来说,他的 sn-p 在 4.6.3 (Debian) 上运行良好。
    猜你喜欢
    • 1970-01-01
    • 2016-01-28
    • 2018-01-14
    • 2019-04-17
    • 1970-01-01
    • 2014-07-11
    • 2023-04-08
    • 2016-02-14
    • 2018-08-28
    相关资源
    最近更新 更多