gpt4 book ai didi

gnuplot - 使 gnuplot 的 x 轴从 0 开始,而不是从第一个日期开始

转载 作者:行者123 更新时间:2023-12-01 02:23:04 25 4
gpt4 key购买 nike

我正在绘制一些 [date, value] 格式的数据(cpu 随时间使用)并希望 xtics 从 0 或 1 开始,而不是第一个日期。

所以 10 小时它应该看起来像:0:01:00, 0:02:00, .., 0:10:00 9:23:00 ... 的内部(因为数据中的第一天是 9 号晚上 11 点)。

我当前的日期时间设置:

set xdata time
set timefmt "%Y-%m-%d %H:%M:%S"
set xtics format "%d:%H:%M" font ",25"

编辑 :如果有一种方法可以在没有日信息的情况下从 x 轴上的 0 开始计算小时数,那也太棒了。无论哪种方式。我只想从 0 开始计数,以使“所用时间”非常清楚。

最佳答案

我无法让它与 set xdata time 一起使用,因为对于输出,只有当月的某一天可用,范围为 [1:31] ,所以 0 -position 将以 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 ''

第一列是使用外部工具提取的。

结果是:

enter image description here

这是另一个变体,它使用更舒适的数据格式,使用逗号作为分隔符,并使用 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

关于gnuplot - 使 gnuplot 的 x 轴从 0 开始,而不是从第一个日期开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18833454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com