2013-05-01 57 views
0

我有时间系列的价格,2000个条目。 我创建了12个向量,每个向量只包含一个月的数据。它们不具有相同的长度,在160和180之间变化大约20个值。在同一个地块上绘制n系列并不重叠

所以现在我需要将所有这些矢量绘制在同一个绘图中,顺序当然是从一月份的数据开始,并在两者之间留出一点空间,并在x轴上放置月份名称阵列[ '月' '二月' 等]

有关示例点击链接和向下滚动至季节性子系列情节 http://www.itl.nist.gov/div898/handbook/pmc/section4/pmc443.htm

enter image description here

+0

这个时间序列的2000行,我想有一个邮戳,并与一列一列价格,对吧? – Oleg 2013-05-01 15:53:04

+0

是的:)我想你会告诉我,我不必将它们分开? – oceanfront 2013-05-01 15:55:52

+1

哦,上帝,我只是发现这个http://www.mathworks.it/it/help/stats/examples/time-series-regression-of-airline-passenger-data.html ...让我们看看我是否可以做到这一点使用不同的长度 – oceanfront 2013-05-01 16:22:38

回答

0

要obtai n类似于上面的图表,您可以在每个月后插入一行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') 

enter image description here

+0

你好奥列格,非常感谢你的回答,但是我没有完全设法使它适合我,是一个糟糕的程序员......图表看起来不错,但数字仍然是“按时间顺序排列”。因此,我使用意大利面条代码创建了9个年份数据数组(2005-2013年),然后是一个for循环,在年份数组中每月计算平均值,将所有数据放在矩阵中,然后使用all_years1 = NaN(size(all_years)+ 1 )%预分配空间。然后all_years1 = [all_years(:,:),NaN(size(all_years,1),1),all_years(:,10:end)]在最后添加NaN列,allyears = reshape(all_years1',120, 1)并绘制... – oceanfront 2013-05-02 14:40:10

相关问题