在相同的图上绘制n系列不重叠

时间:2013-05-01 15:50:19

标签: matlab plot

我有一个时间序列的价格,2000条目。 我创建了12个向量,每个向量只包含一个月的数据。它们的长度不同,在160到180之间变化大约20个值。

所以现在我需要在同一个图中绘制所有这些矢量,当然是从1月数据开始,在它们之间有一点空间,在x轴上放置月份名称(我在array ['jan''feb'etc]

有关示例,请单击链接并向下滚动到季节性子系列图 http://www.itl.nist.gov/div898/handbook/pmc/section4/pmc443.htm

enter image description here

1 个答案:

答案 0 :(得分:0)

要获得与上面类似的图形,您可以在每个月之后插入一行NaN。因为,每个月都有不同的行数,你不能简单地重塑,连接NaNs,并重新整形。

假设您在第一列中有时间戳,在第二列中有一些数据:

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')

enter image description here