利用 gnuplot 绘制时间序列图

大名鼎鼎的 gnuplot 就不多介绍了。

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

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

#日/月/年 值
01/06/93	100
17/08/93	900
04/10/93	1300
11/10/93	300
28/10/93	1000

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

set xdata time

类似的命令还包括:

set ydata time
set zdata time
set x2data time
set y2data time
set cbdata time

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

set xdata 

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

set timefmt "<format string>"

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

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

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

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

输出的图形如下。  

利用 gnuplot 绘制时间序列图_第1张图片

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

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

然后更新一下输出:

Replot

利用 gnuplot 绘制时间序列图_第2张图片

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



你可能感兴趣的:(利用 gnuplot 绘制时间序列图)