我在CentOS 6.6上使用gnuplot 4.4。
我发现很多example在线显示以下内容(请注意使用%.3S
)将使“12:42:51.047
”等时间戳得以解析并用作X轴值:
set xdata time
set format x "%H:%M:%.3S"
set timefmt "%H:%M:%S"
但是,我的输入与HH:MM:SS.mmm
不同,但与SSSSSSSSSS.mmm
类似,其中整数部分是UNIX时间戳。
我尝试了以下操作,但由于所有数据点都在“00:00:00”呈现,因此解析似乎失败了:
set xdata time
set format x "%.3s"
set timefmt "%H:%M:%S"
The manual没有任何迹象表明这是可能的,但是,再说一次,它并没有说%H:M:%.3S
也会起作用。
有可能做我想做的事吗?如果是这样,怎么样?
答案 0 :(得分:4)
必须仅为输出提供精度。对于解析,秒(或时间戳)被视为浮点数。但是,从版本4.6.4开始(在此处测试),似乎只支持用毫秒读取时间戳。
但是,有一种解决方法:在($1)
语句中指定1
而不是using
会使gnuplot将该值视为正常的浮点数。请注意,我没有设置任何timefmt
,因为无论如何它都会被这种解决方法规避。
然后你还必须知道,在版本5之前,gnuplot的时间参考是2000年1月1.所以你必须通过相应的偏移来校正(2000年1月1日的Unix时间戳是946684800)。因此,以下内容适用于gnuplot 4.4:
set xdata time
set format x '%d.%m.%Y %H:%M:%S'
plot 'file.dat' using ($1 - 946684800):2
答案 1 :(得分:2)
除了停止对抗默认设置外,您根本不需要做任何事情。对于此输入数据:
1000000000.001 1
1000000000.002 2
1000000000.003 3
1000000000.004 3
1000000000.005 2
1000000000.006 1
以下命令
gnuplot> plot "gnuplotdatatest.txt" w l
gnuplot> set yrange [0:4]
gnuplot> replot
产生以下输出
SSSSSSSSSS.mmm格式的时间戳是浮点数的简单(十进制表示),这是GNUplot默认处理输入列的方式。
答案 2 :(得分:1)
较新版本的gnuplot支持带有小数部分的Unix时间戳格式.ab.desaturate{
-webkit-filter: grayscale(1);
-webkit-filter: grayscale(100%);
filter: gray;
filter: grayscale(100%);
filter: url(desaturate.svg#d3);
}
。您需要更新到4.6或5.x或更高版本。
如果你不确定,请检查src / time.c。