gnuplot 绘制时间序列图

来源:互联网 发布:淄博seo外包公司 编辑:程序博客网 时间:2024/05/20 07:17

通常我们利用数据文件绘图时,XY坐标的值都是实数,也就是我们要绘制图形的函数是RR的映射。可有时横轴或纵轴的数据是时间值,时间的格式每次可能还都不太一样。这时我们就需要特殊设置一下 gnuplot了。

假设我们有数据文件“timedat.dat,文件的内容如下。

#日/月/年 值  
  1. 01/06/93    100  
  2. 17/08/93    900  
  3. 04/10/93    1300  
  4. 11/10/93    300  
  5. 28/10/93    1000  

可以看到,横坐标是时间值,需要将这个信息告诉gnuplot。利用如下的命令。 

  1. set xdata time  

类似的命令还包括:

set ydata time  

  1. set zdata time  
  2. set x2data time  
  3. set y2data time  
  4. set cbdata time  

如果要回到原来的那种横坐标为数值的状态,可以执行如下命令:

  1. set xdata   

下面还需要告诉 gnuplot 数据文件中的时间格式是什么样,要利用如下的命令

  1. set timefmt "<format string>"  

其中format string 用来描述数据文件中时间的格式。对于我们的数据文件,可以这样设置:

  1. set timefmt "%d/%m/%y"  

Gnuplot 支持的格式如下:

格式

解释

%d

day of the month, 131

%m

month of the year, 112 

%y

year, 099

%Y

year, 4-digit

%j

day of the year, 1365

%H

hour, 024

%M

minute, 060

%s 

seconds since the Unix epoch (1970-01-01 00:00 UTC)

%S

second, integer 060 on output, (double) on input

%b

three-character abbreviation of the name of the month

%B

name of the month

 到这里就设置好了,下面开始显示

  1. plot 'timedat.dat' using 1:2 with points ps 3 pt 6 title ""  

输出的图形如下。  

可以看到输出的横坐标只有月份和日期,没有年份信息。如果需要加入年份信息,可以这样设置:

  1. set format x "%y/%m/%d"  

然后更新一下输出:

  1. Replot  

这时的输出结果就满足我们的需求了。如果需要更细致的设置,请参考 gnuplot 的帮助文件。
0 0
原创粉丝点击