Gnuplot 以毫秒为单位分析UNIX时间戳作为时间

Gnuplot 以毫秒为单位分析UNIX时间戳作为时间,gnuplot,Gnuplot,版本:gnuplotv5.3.0 上下文 我试图绘制以下CSV数据,其中第一列是以毫秒为单位的UNIX时间戳,使用浮点表示法,第二列是表示即时吞吐量的整数(单位/s) 为此,我编写了以下脚本文件: set xdata time set timefmt "%s" set datafile separator comma plot "results.csv" u 1:3 我从gnuplotV5文档中了解到,此版本支持毫秒精度: 当前版本的gnuplot以

版本:
gnuplotv5.3.0

上下文 我试图绘制以下CSV数据,其中第一列是以毫秒为单位的UNIX时间戳,使用浮点表示法,第二列是表示即时吞吐量的整数(单位/s)

为此,我编写了以下脚本文件:

set xdata time
set timefmt "%s"

set datafile separator comma

plot "results.csv" u 1:3
我从
gnuplot
V5文档中了解到,此版本支持毫秒精度:

当前版本的gnuplot以毫秒精度存储时间

问题 执行
plot
命令后,
gnuplot
会对CSV文件中的每个数据条目抛出以下警告,并且不会打印任何值:

"throughput.plt", line 15: warning: time value out of range
我试过的 我在秒内将数据文件第一列中的所有条目转换为UNIX时间戳(将
e+12
更改为
e+9
)。这次
plot
执行时没有任何错误,但精度的损失使图形过于近似,无法进行分析


gnuplot
中是否有方法以毫秒为单位摄取UNIX时间戳?

从所有值中减去第一个值。像这样的。您还可以为此使用伪列
$0

代码:(编辑:我更喜欢复制粘贴示例,包括数据)

结果:


从所有值中减去第一个值。像这样的。您还可以为此使用伪列
$0

代码:(编辑:我更喜欢复制粘贴示例,包括数据)

结果:


如果表示时间的列在UNIX时间中已表示为实数,则不需要设置时间“%s”。按原样读取数字就足够了

但是,数据中的数字“1.6069112402441587e+12”被解释为UNIX时间“52890/12/27 17:24:04+0000”。因此,您将收到消息“警告:时间值超出范围”。当然,这不是你想要的时间

如果要按原样使用数据,脚本将如下所示

set xdata time

# set timefmt "%s"    ### This line is not needed!

set datafile separator comma

set format x "%H:%M\n%.4S"
set grid xtics

plot "results.csv" u ($1/1000):2 w linespoints

如果表示时间的列在UNIX时间中已表示为实数,则不需要设置时间“%s”。按原样读取数字就足够了

但是,数据中的数字“1.6069112402441587e+12”被解释为UNIX时间“52890/12/27 17:24:04+0000”。因此,您将收到消息“警告:时间值超出范围”。当然,这不是你想要的时间

如果要按原样使用数据,脚本将如下所示

set xdata time

# set timefmt "%s"    ### This line is not needed!

set datafile separator comma

set format x "%H:%M\n%.4S"
set grid xtics

plot "results.csv" u ($1/1000):2 w linespoints

从所有值中减去第一个值怎么样?e、 g.1.6069112402441587e+12。我不认为您希望在几天内以毫秒精度显示测量数据…不是在几天内,而是在1-30分钟之间,这取决于正在执行的负载测试。从所有值中减去第一个值如何?e、 g.1.6069112402441587e+12。我不认为你想在几天内以毫秒精度显示测量数据……不是在几天内,而是在1-30分钟之间,这取决于正在执行的负载测试。这是我注意到的一个非常巧妙的技巧。我的选择是使用
set format x“%.0f”
显示原始时间戳,并使用
set xtics 10000
每隔10秒显示一个勾号。如何使用生成的
x
值以秒为单位显示刻度?例如,除以1000,即将
$1-t0
替换为
($1-t0)/1000
,或以分钟为单位
($1-t0)/60000
,等等。这是我注意到的一个非常巧妙的技巧。我的选择是使用
set format x“%.0f”
显示原始时间戳,并使用
set xtics 10000
每隔10秒显示一个勾号。如何使用生成的
x
值以秒为单位显示刻度?例如,除以1000,即将
$1-t0
替换为
($1-t0)/1000
,或以分钟为单位
($1-t0)/60000
,等等。这正是我希望看到的结果。我从
e+12
e+9
的转换非常接近,结果证明我没有失去任何精度。这正是我期望看到的结果。我从
e+12
e+9
的转换非常接近,结果证明我没有失去任何精度。
set xdata time

# set timefmt "%s"    ### This line is not needed!

set datafile separator comma

set format x "%H:%M\n%.4S"
set grid xtics

plot "results.csv" u ($1/1000):2 w linespoints