我有以下格式的csv文件,包含超过3k行和20列
21:46:12 82748 5356864
22:47:33 82748 5352768
23:47:43 82748 5356864
00:47:53 82748 5356864
01:48:03 82748 5352768
02:48:13 82748 5356864
03:48:23 82748 5352768
04:48:33 82748 5356864
当我试图绘制图形时,时间从04到21进行排序,其中我的要求是以相同的行顺序绘制,即21到04(我没有订购日期条目)。是否有任何机制来维持绘制情节的相同顺序。
答案 0 :(得分:1)
(编辑:请参见底部的特定时间解决方案)
通过这个答案,你需要对你的具体细节进行一些研究,但解决方案基本上就是这个。
我建议您使用计数系统,每当您增加一天时存储在某个变量中,每当第一列中的值小于之前的值时,就会发生这种情况。 22:00:00之后是01:00:00。请考虑以下数据:
0 1
1 2
2 3
3 4
0 5
1 6
2 7
3 8
循环每4个单位发生一次(在你的情况下是24小时)。按原样绘制,看起来像这样:
现在,使用以下代码,您可以跟踪"跳跃"在x值:
count=0
x0=1
plot "data" u ($1 < x0 ? (x0=$1, count=count+1, $1+4.*count) : \
(x0=$1, $1+4.*count) ):2 w l
如果当前x值低于前一个值,则上面的代码会将count
增加1。然后x值转移到x + 4.*count
。四是我的周期宽度(24小时为你)。如下所示:
特定时间的解决方案:
同样的原则,适用于OP的问题:
set xdata time
set timefmt "%H:%M:%S"
set format x "%d - %H:%M:%S"
set xtics 6*3600
count = 0
x0 = 0
plot "data" u (timecolumn(1) < x0 ? (x0=timecolumn(1), count=count+1, \
$1+24*3600*count) : (x0=timecolumn(1), timecolumn(1)+24*3600*count) ):3 w l