我无法得到它与set xdata time
工作,因为输出只有一个月的日子是可用的,其范围为[1:31]
,所以0
- 位将与1
开始。对于总小时数也是如此,因为该值限制为[0:23]
,因此23
上的数字将被退回。
这是一个没有时间数据的解决方案。我用strptime
功能的日期字符串转换为时间标记(以秒计),然后将其除以3600,以获得小时(如浮点数):
测试数据文件是:
2013-08-25 18:45:11 100
2013-08-25 19:11:23 200
2013-08-25 20:00:32 400
2013-08-25 21:00:32 300
2013-08-26 20:11:12 500
和示例脚本:
reset
file='data.txt'
fmt="%Y-%m-%d %H:%M:%S"
start=system('head -1 '.file)
start_stamp = strptime(fmt, start)
plot 'data.txt' using ((strptime(fmt, stringcolumn(1).' '.stringcolumn(2))-start_stamp)/3600.0):3 with lines t ''
第一列与外部工具提取。
结果是:
这里是另一种变型,它采用了更舒适的数据格式,使用逗号作为分离器,并且所述第一列与gnuplot的提取:
的数据文件:
2013-08-25 18:45:11,100
2013-08-25 19:11:23,200
2013-08-25 20:00:32,400
2013-08-25 21:00:32,300
2013-08-26 20:11:12,500
脚本文件:
reset
file='data.txt'
fmt="%Y-%m-%d %H:%M:%S"
set datafile separator ','
plot 'data.txt' using ($0 == 0 ? start_stamp = strptime(fmt, stringcolumn(1)) : 0, \
(strptime(fmt, stringcolumn(1))-start_stamp)/3600.0):2 with lines t ''
结果相同。
编辑:最后一个变种,这是一个混合@ andyras的和我的答案。您可以使用set timefmt
并明确调用timecolumn
来解析输入为时间。输出然后像传统的双数字一样处理。我用$0
,即当前样本的数量,设置偏移值:
reset
set timefmt "%Y-%m-%d %H:%M:%S"
offset = 0
t0(x)=(offset=($0==0) ? x : offset, x - offset)
plot 'data.txt' u (t0(timecolumn(1))/3600.0):3 notitle w l
我周围的各种设置的位出场,但我无法得到它的工作。使用'%d'时出现的问题是'一个月中的一天',但不是天数。所以最小值始终是'1',并且您的输出将在'0'位置以'01:...'开始。我不知道如何绕过这一点。 – Christoph
那么,只要x轴可能有总小时数,我会很高兴甚至会忽略这一天。我将编辑我的答案以添加该信息。 – CornSmith