【问题标题】:How to plot time series in gnuplot?如何在 gnuplot 中绘制时间序列?
【发布时间】:2016-01-28 22:03:52
【问题描述】:

我必须在 gnuplot 中绘制时间序列。我知道有一种方法可以格式化 x 轴以显示日期,但是我要绘制的文件必须在列时间中包含日期。例如,如果我必须绘制这个时间序列:

TIME    VAR 1
01/01/79    -1.8351
01/02/79    0.6315
01/03/79    -1.3365
01/04/79    2.1251
01/05/79    -0.6708
01/06/79    -3.3965
01/07/79    -0.2298
01/08/79    0.4807
01/09/79    -2.4213
01/10/79    -0.5998
01/11/79    -1.0238
01/12/79    -0.2025
01/13/79    0.4362
01/14/79    -1.1263
01/15/79    3.3197
01/16/79    0.0337
01/17/79    -0.7374

我会使用这个命令行:set xdata timeset timefmt "%m%d%Y",它工作得很好。但是,如何用这种格式绘制时间序列:

TIME    VAR 1
1   -1.8351
2   0.6315
3   -1.3365
4   2.1251
5   -0.6708
6   -3.3965
7   -0.2298
8   0.4807
9   -2.4213
10  -0.5998
11  -1.0238
12  -0.2025
13  0.4362
14  -1.1263
15  3.3197
16  0.0337
17  -0.7374
18  1.1504
19  -0.1656
20  -0.4389
21  1.4645
22  1.6538
23  1.6362
24  -2.0363
25  -4.9741

我想在 x 轴上显示从 1979 年到 2014 年的日期(显然我的 ts 更长)。有可能吗?

【问题讨论】:

  • 您想要的结果不清楚。您想在 x 轴上出现 1979 而不是 1 等等?这将导致很多混乱。也许你描述得更详细一点。
  • 试试plot[1969:1995][-5:4] "so.dat" u ($1+1969):2 w lp' as a first step (so.dat` 是上面数据的文件)。
  • @vaettchen... 是的,这正是我想要的。我希望出现年份而不是时间。 1979 ->1; 1980->2....等等
  • @Christoph。第一列代表时间
  • 那么它为你完成了吗?

标签: plot gnuplot time-series


【解决方案1】:

如果您希望 x 轴被解释和格式化为时间,您可以这样做:

set xdata time                         
set timefmt "%Y"
set xtics rotate
f(x)=sprintf("%d", x+1978)
plot 'test' u (f($1)):2 w lp

这给出了以下情节:

编辑:如果第一列中的数字代表从 1/1979 开始的月份(即 1 = 01/1979,2 = 02/1979),则函数 f(x) 和时间格式必须适当调整:

set xdata time                         
set timefmt "%m-%Y"
set xtics rotate
f(x)=sprintf("%d-%d", int(x-1)%12+1, 1979+floor((x-1)/12))
plot 'test' u (f($1)):2 w lp ls 4 lw 3

上面的命令序列输出

【讨论】:

  • 这正是我想要的。但是,日期应该是逐月从 1979 年到 2014 年,我的意思是它是一个每月的时间序列。如果我只想要年份,那将是什么命令?
  • 要格式化 x 轴中的日期表示,您可以使用 set format x "%d/%m/%y"-command。如果您只想要年份,请使用set format x "%y"(最后两位数:79,80,...)或set format x "%Y"(四位数表示:1979、1980)
  • 我还有一个问题。当我尝试绘制时,我的 ts 有 423 个步骤,它没有绘制正确的日期。我的时间序列是每月,从 1979 年到 2014 年
  • 你能说得更具体点吗? “不是 [...] 正确的日子”是什么意思?你能提供样品(输出)吗?
  • 我的意思是,当我绘制 ts 时,x 轴使用整个数据显示从 1979 年到 2432 年的时间。我的时间序列的 time forman 是 montly,所以我想要一个解释自 1979 年到 2014 年以来每月的时间的命令......清楚吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-22
  • 2021-02-24
相关资源
最近更新 更多