matlab - 在 Matlab 中使用 "label grouping"绘制时间序列

标签 matlab plot timestamp time-series datestamp

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

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

我想做的事: 绘制残差日期戳作为标签。观察结果并非来自连续的几天序列(即,几天之间可能存在一些没有观察结果的间隙),并且某些日子比其他日子有更多的观察结果。我不能为每个观察添加一个标签,因为那样标签就会太多。所以我需要以某种方式将它们分组,按天或按月。也就是说,仅显示当天所有观测值下的月份和日期(例如 10/3),或者仅显示该月所有观测值下的月份(例如 3)。我怎样才能利用我拥有的数据做到这一点?

最佳答案

您应该能够在不“分组”的情况下绘制此图。如果将日期转换为时间戳:

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

然后你就可以做正常的绘图了:

plot(timestamps, z);

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

datetick('x');

关于matlab - 在 Matlab 中使用 "label grouping"绘制时间序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10153059/

相关文章:

matlab - 如何在 MATLAB 中读取制表符分隔的文本文件,该文件包含大部分数字,但有时在几个单元格中包含单词 MAX?

python - 具有自定义日期范围的条形图的类型错误

python - 如何绘制梯度(f(x,y))?

python - 非均匀间隔数据的热图

java - 如何在Java中以字符串格式获取当前时间戳? "yyyy.MM.dd.HH.mm.ss"

matlab - 在Matlab上绘制正弦波的问题

matlab - MATLAB 'publish'函数中打印和数字的控制顺序

Android:如何以毫秒为单位获取小时/分钟

matlab - 对每行不同范围的元素求和并替换

javascript - 将日期和时间转换为 Unix 时间戳