如何用时间数据绘制时间序列数据是经过的秒数

时间:2019-07-08 11:22:33

标签: plot time-series gnuplot

我有以下数据,并希望将其绘制出来。

#time,load
10,35965.67
15,35233.82
20,35239.05
25,37188.61
30,36622.32
35,36538.27
....
3000,36305.84

在每一行上,第一列是经过的秒数。第二列是每5秒的交易总数。

我想作图:

  • x轴:时间。例如10/15/20/25 ...
  • y轴:交易。

这是我的配置:

set datafile separator ","
set terminal png size 900,400
set title "Transaction/second graph"
set ylabel "Transactions"
set xlabel "Seconds"
set xdata time
set format x "%s"
set key left top
set grid
plot "output.txt" using 0:1 with lines lw 2 lt 3 title 'tps'

所以Gnuplot生成的图像是:

enter image description here

此图像在轴上反转。我尝试了诸如plot using 1:0之类的其他解决方案,但遇到了异常。而且,看起来数据不正确。我不知道0/60/120的值是什么...

2 个答案:

答案 0 :(得分:2)

如果您的数据以秒为单位,并且只想显示秒,我看不出为什么使用set xdata time将数据更改为timedata的原因。除非您想将其显示为小时:分钟:秒或天。

因此只需使用:

plot "output.txt" u 1:2 w l lw 2 lt 3 title 'tps'

如果您使用reset session开始代码,这并没有什么坏处。使用此范围和数字以及可能导致意外结果的其他持久设置进行重置。如果我不使用set output,则不会关闭输出文件,并且磁盘上有0 kB。

代码:

### simple plot
reset session
set terminal png size 900,400
set output "myOutput.png"

set datafile separator ","
set title "Transaction/second graph"
set ylabel "Transactions"
set xlabel "Seconds"
set key left top
set grid
plot "output.txt" using 1:2 with lines lw 2 lt 3 title 'tps'
set output    # close output file and swith back to default
### end of code

结果:

enter image description here

答案 1 :(得分:1)

您还需要告诉gnuplot输入时间的格式。 set format x "%s"只是表示数字在图表中的格式。

要告诉gnuplot时间以秒为单位,请使用

set timefmt "%s"