2013-05-01 56 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

相關問題