Цветной MATLAB Компас График - PullRequest
       14

Цветной MATLAB Компас График

1 голос
/ 22 октября 2011

Я довольно новичок в MATLAB, и поэтому любая помощь очень ценится.

Я хочу визуализировать несколько векторов, используя компас диаграммы MATLAB.Можно ли раскрасить разные векторы?Эти векторы со временем меняются, и порядок, в котором они передаются на график компаса, никогда не меняется.Есть ли другой способ отличить векторы?

Заранее спасибо!М.

РЕДАКТИРОВАТЬ: решение работает (т.е. стрелки окрашены), пока не будет достигнут самый последний векторный элемент компаса.Если я не остановлю цикл раньше, метод завершится с ошибкой ???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

Ответы [ 2 ]

4 голосов
/ 23 октября 2011

Опираясь на @ 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')
3 голосов
/ 22 октября 2011

Вы можете сделать это:

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    
...