当它们以 UNIX 时间戳的形式给出时,我可以绘制时间吗?

Lig*_*ica 3 datetime gnuplot

我在 CentOS 6.6 上使用 gnuplot 4.4。

我在网上发现了许多示例,表明以下(注意使用%.3S)将使诸如“ 12:42:51.047”之类的时间戳能够被解析并用作 X 轴值:

set xdata time
set format x "%H:%M:%.3S"
set timefmt "%H:%M:%S"
Run Code Online (Sandbox Code Playgroud)

但是,我的输入不是 likeHH:MM:SS.mmm而是 like SSSSSSSSSS.mmm,其中不可或缺的部分是 UNIX 时间戳。

我尝试了以下操作,但解析似乎失败了,因为所有数据点都在“00:00:00”呈现:

set xdata time
set format x "%.3s"
set timefmt "%H:%M:%S"
Run Code Online (Sandbox Code Playgroud)

该手册没有给出任何可能的迹象,但同样,它也没有说这%H:M:%.3S会起作用。可以做我想做的事吗?如果是这样,如何?

Chr*_*oph 6

必须仅为输出提供精度。对于解析,秒(或时间戳)被视为浮点数。但是似乎只支持从 4.6.4 版开始(在此处测试)以毫秒为单位读取时间戳。

但是,有一个解决方法:在语句中指定($1)而不是使 gnuplot 将该值视为正常的浮点数。请注意,我没有设置 any ,因为无论如何这种解决方法都会绕过它。1usingtimefmt

那么你也必须知道,在版本 5 之前,gnuplot 的时间参考是 1. Jan. 2000,所以你必须通过相应的偏移量进行更正(1. Jan 2000 的 Unix 时间戳是 946684800)。因此,以下适用于 gnuplot 4.4:

set xdata time
set format x '%d.%m.%Y %H:%M:%S'
plot 'file.dat' using ($1 - 946684800):2
Run Code Online (Sandbox Code Playgroud)