我有一个时间序列的价格,2000 个条目。我创建了 12 个向量,每个向量只包含一个月的数据。它们的长度不同,在 160 和 180 值之间变化大约 20 个值。
所以现在我需要在同一个图中按顺序绘制所有这些向量,当然,从一月份的数据开始,中间有一点空间,在 x 轴上放置月份名称(我有一个数组 ['一月'二月'等]
例如,单击链接并向下滚动到季节性子系列图 http://www.itl.nist.gov/div898/handbook/pmc/section4/pmc443.htm
我有一个时间序列的价格,2000 个条目。我创建了 12 个向量,每个向量只包含一个月的数据。它们的长度不同,在 160 和 180 值之间变化大约 20 个值。
所以现在我需要在同一个图中按顺序绘制所有这些向量,当然,从一月份的数据开始,中间有一点空间,在 x 轴上放置月份名称(我有一个数组 ['一月'二月'等]
例如,单击链接并向下滚动到季节性子系列图 http://www.itl.nist.gov/div898/handbook/pmc/section4/pmc443.htm
要获得与上述类似的图表,您可以在每个月之后插入一行 NaN。由于每个月都有不同的行数,因此您不能简单地重新整形、连接 NaN 并重新整形。
假设您在第一列中有时间戳,在第二列中有一些数据:
data = [(now-11:now+13)' rand(25,1)];
% Count in 'idx' when each year-month pair ends
[y,m] = datevec(data(:,1));
[~, idx] = unique([y,m],'rows','last');
% Preallocate expanded Out with NaN separations between each month
szData = size(data);
Out = NaN(szData(1) + numel(idx)-1,2);
% Reposition 'data' within 'Out'
pos = ones(szData(1),1);
pos(idx(1:end-1)+1) = 2;
Out(cumsum(pos),:) = data;
% Example plot
plot(Out(:,1),Out(:,2))
set(gca,'Xtick',data([1 11 12 25],1))
datetick('x','dd-mmm','keepticks')