我从传感器捕获数据并将其输出到.dat文件中。我想使用gnuplot将这些信息导出到一个图中并使其完全自主,只显示最近7天的收集数据(没有硬编码日期,应根据系统时间使用time()
函数进行调整)
如果我硬编码日期范围,即set xrange ["07-25-16":"08-25-16"]
,我没有收到错误,代码/情节顺利运行。但是,如果我尝试使用time()
函数绘制过去七天的时间函数,则会收到以下错误:
line 0: illegal month
这是我从传感器收集的数据(output.dat):
07-21-2015 15:21 0 0 0
07-23-2016 15:21 0 0 0
07-29-2016 15:21 0 1 -1
07-29-2016 15:21 1 1 0
07-29-2016 15:21 2 1 1
07-29-2016 15:21 3 1 2
07-29-2016 15:21 3 2 1
07-29-2016 15:21 4 2 2
07-29-2016 15:21 5 2 3
07-29-2016 15:21 5 3 2
07-29-2016 15:21 5 4 1
07-29-2016 15:21 5 5 0
07-29-2016 15:22 6 5 1
07-29-2016 15:22 6 6 0
07-29-2016 15:23 1 0 1
07-29-2016 15:23 1 1 0
这是我正在运行的代码(注释掉了xrange,它取代了我试图实现的那个):
set xdata time
set timefmt "%m-%d-%Y %H:%M"
xstart=strftime("%m-%d-%Y %H:%M", time(0) - 604800)
xend=strftime("%m-%d-%Y %H:%M", time(0))
#set xrange ["07-25-16":"08-25-16"]
set xrange ["xstart" : "xend"]
set format x "%m-%d\n%H:%M"
set title "Sensor Data"
set xlabel "Date\nTime"
set ylabel "Number of Sensor Trips"
plot "output.dat" using 1:4 skip 1 t "Exits" with linespoints, \
"output.dat" using 1:3 skip 1 t "Entrances" with linespoints
set term png
set output "output.png"
replot
set term x11
非常感谢任何帮助。谢谢!
编辑1 - Gnuplot现在没有在字符串修复后正确绘制(从xrange中删除""
仅显示:set xrange [xstart:xend]
:
关于如何修复的任何想法?
答案 0 :(得分:2)
如果绘制时间数据,您可以使用时间字符串指定轴范围,格式与数据文件中的方式相同,但您不能。你可以简单地使用整数:
reset
set xdata time
set timefmt "%m-%d-%Y %H:%M"
set xrange [time(0) - 7*24*60*60:]
set format x "%m-%d\n%H:%M"
set style data linespoints
plot "output.dat" using 1:4 skip 1 t "Exits", \
"" using 1:3 skip 1 t "Entrances"
答案 1 :(得分:0)
为了完整起见,如果您想要执行脚本中的操作,即两个给定日期之间的范围,请使用strptime
:
set xrange [strptime("%m-%d-%Y","07-25-16"):strptime("%m-%d-%Y","08-25-16")]