2011-10-22 140 views
1

我對MATLAB很新,因此非常感謝所有幫助。彩色的MATLAB指南針圖形

我想使用MATLAB的圖形顯示多個向量。是否可以着色不同的載體?這些矢量隨着時間的推移而改變,它們交給指南針圖的順序從不改變。有另一種方法來區分載體嗎?

預先感謝您! M.

編輯:該解決方案有效(即箭頭着色),直到達到指南針的最後一個向量元素。如果我之前沒有停止循環,該方法退出並顯示錯誤? Subscript indices must either be real positive integers or logicals..指南針的每個對象(即箭頭)都被正確地加入,除了最後一個;檢查指標,一切似乎都沒問題。我該怎麼辦?

這是我目前使用的代碼:

handle = compass(viewframe(1,:),viewframe(2,:)); 
colors = get(0,'DefaultAxesColorOrder'); 
for i=1:length(handle) 
    set(handle(i),'color', colors(mod(i,length(colors)),:)) 
end 

回答

3

你可以這樣做:

Z = compass(eig(randn(5))); 
colors = get(0,'DefaultAxesColorOrder') 
for i=1:length(Z) 
    set(Z(i),'color',colors(mod(i-1,length(colors))+1,:)) 
end  
4

大廈@cyborg的答案,你可以在一個呼叫分配的顏色:

Z = eig(randn(5)); 
clr = lines(numel(Z)); %# colors you want to use 

h = compass(Z);   %# compass(real(Z),imag(Z)) 
set(h, {'Color'},num2cell(clr,2), 'LineWidth',2) 

compass

你也可以使用一個圖例註釋:

str = cellstr(num2str((1:numel(Z))','Arrow %d')); %' 
legend(h, str, 'Location','BestOutside') 
+0

嗨@Amro,我刪除了我原來的評論,因爲我無法再對其進行編輯... – Eric

+1

@Marcus:啊,你現在的樣子使用MOD函數有點關閉:當循環變量'i'等於'length(colors)'的倍數時,餘數爲'0',因此無效的下標錯誤...我固定了cyborg的答案 – Amro

+0

Thanks @Amro,我總是忘記Matlab指數是基於1的。 – Eric