【问题标题】:Create and Plot Time Series Data in Matlab在 Matlab 中创建和绘制时间序列数据
【发布时间】:2015-07-03 10:26:41
【问题描述】:

我有一个 (1x700) 向量 x,我想在 Matlab 中为其创建和绘制时间序列对象。每个观察对应一个月,第一个观察属于1960年1月。我尝试了以下:

state1 = timeseries(x,1:size(x,2));

state1.Name = 'Test';
state1.TimeInfo.Units = 'months';
state1.TimeInfo.StartDate = 'Jan-1960';     % Set start date.
state1.TimeInfo.Format = 'yy';         % Set format for display on x-axis.
state1.Time = state1.time - state1.time(1);      % Express time relative to the start date.

plot(state1);

但是,我仍然在 x 轴上看到数字,而不是年份。有人可以帮忙吗?提前致谢!

【问题讨论】:

  • 'Months' 不是有效的 TimeInfo 单位
  • 您是否正在寻找一种方法来使用 x 轴的日期时间标签来绘制月份?
  • @krisdestruction 感谢您的帮助。我只是想让 x 轴显示年份,因为我的数据是每月的。不知道是不是你的意思?我不知道日期时间标签,但我认为时间序列类可以做到这一点。
  • 如果这能解决你的问题,请告诉我!
  • @krisdestruction 现在试试看 :)!无论如何感谢您的帮助!

标签: matlab


【解决方案1】:

创建随机数据。 1/12 对应于每个月所代表的一年的分数。

x = 1960:1/12:1970;
y = rand(1,121);

然后使用plot绘制x和y轴数据。

plot( x, y )

然后将刻度设置为每年十年。 1960:1970 将生成 [1960 1961 ...] 每个对应于刻度的年份。

set( gca, 'XTick', 1960:1970 );

这是输出图。

以 1 年为间隔会得到非常混乱的大量数据。因此解决方案包括设置更大的间隔或将刻度设置为垂直显示而不是水平显示。下面的代码显示了如何设置 5 年的间隔。

set( gca, 'XTick', 1960:5:2010 );

【讨论】:

  • 谢谢,它做了它应该做的:)!感谢您的帮助!
  • 轴上的标签似乎仍然存在一些问题。当我在其他年份尝试其他配置时,通常即使我有 set( gca, 'XTickLabel', 1960:2010 ); 并且我有正确数量的观察值,它也只显示直到 1967 年(包括 1967 年)的标签。
  • 你能把这个截图更新到你的问题中吗?以及您尝试使用此答案的代码?
  • 我现在把它和​​我使用的代码一起添加到了 OP 中。
  • 也相应地更新了我的答案。没问题:)
猜你喜欢
  • 2018-10-21
  • 1970-01-01
  • 2016-02-09
  • 2020-08-06
  • 2020-04-09
  • 2016-11-02
  • 2015-06-30
相关资源
最近更新 更多