2011-10-22 137 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