使用“标签分组”在Matlab中绘制时间序列

时间:2012-04-14 10:57:38

标签: matlab plot timestamp time-series datestamp

在Matlab中,我有以下形式的数据:

  • “z”,一个17'256x1双,包含回归的残差,例如: -0.0596
  • “dates”,一个17'256x1单元,包含回归中每个观察的日期和时间戳(因此,残差),例如, '10 / 3/2011 9:30:00 PM'

我想做什么: 将残差 datestamp 绘制为标签。观察结果并非来自连续的天数(即可能存在一些缺口,天之间没有观察结果),有些日子的观察结果比其他日子更多。每次观察我都不能有一个标签,因为标签太多了。所以我需要以某种方式将它们分组,无论是白天还是月份。也就是说,仅显示当天所有观察结果中的月份和日期(例如10/3),或仅显示该月所有观察结果下的月份(例如3)。我怎么能用我拥有的数据呢?

1 个答案:

答案 0 :(得分:3)

你应该能够在没有'分组'的情况下绘制它。如果您将日期转换为时间戳:

timestamps = cellfun(@(date)datenum(date), dates);

然后你可以做一个正常的情节:

plot(timestamps, z);

和Matlab将处理xaxis标签本身(即它将在​​日期的时间范围内均匀分布),但它们将是时间戳数字。要在xaxis上获取格式化日期,请使用:

datetick('x');