Matlab: кольцевые графики

#matlab #visualization

#matlab #визуализация

Вопрос:

есть ли простой способ в Matlab для создания визуализаций, подобных следующим?

Визуализация

Важными являются 2 кольцеобразные формы и прикрепленные векторы, (более или менее) указывающие на центр черных пятен. Подсказки к другим инструментам визуализации, создающим векторные изображения, которые могут привести к аналогичным результатам, также очень ценятся! Все мои усилия по решению этой задачи не привели меня дальше…

Matlab был бы хорошей платформой для автоматической генерации такого рода визуализации для различных «точечных сценариев»…

Заранее благодарю вас, M.

Комментарии:

1. Я не совсем понимаю фигуру. Не могли бы вы рассказать мне немного подробнее, какие данные он представляет?

2. Привет @Jonas, конечно! Этот рисунок представляет так называемый снимок . Эта концепция была придумана Б. А. Картрайтом и Т. С. Коллеттом (например, используется в их документе «Карты ориентиров для медоносных пчел»). Источник ). Внешнее серое кольцо представляет текущий вид (т. Е. Ориентиры) ориентиров, внутреннее кольцо — целевой вид. Общая «кольцевая конструкция» представляет пчелу, пытающуюся вычислить вектор до целевого местоположения.

Ответ №1:

Вот часть рисунка. Остальное должно быть легко понять

 %# define the ring
phi = linspace(0,2*pi,360);
innerRim = [cos(phi)',sin(phi)'];
outerRim = [cos(phi)',sin(phi)']*1.3;

xRing = [outerRim(:,1),innerRim(:,1),innerRim([2:end,1],1),outerRim([2:end,1],1)]';
yRing = [outerRim(:,2),innerRim(:,2),innerRim([2:end,1],2),outerRim([2:end,2],2)]';

%# create some data. 0 for black 0.5 for gray. 
%# RingData has a value for each degree
ringData = ones(1,360) * 0.5;
ringData(25:30) = 0;
ringData(77:80) = 0;
ringData(240:255) = 0;

%# plot the ring
%# for an outer ring, add 1 to xRing, yRing
figure
patch(xRing,yRing,ringData,'EdgeColor','none');
set(gca,'cLim',[0 1]);
axis square
axis off
set(gcf,'color','w');

%# plot three arrows at the origin
hold on, qh=quiver(zeros(3,1),zeros(3,1),[0.4;0.3;-0.5],[0.7;-0.1;0.3])
set(qh,'LineWidth',3)
  

введите описание изображения здесь

Комментарии:

1. Большое вам спасибо за ваши усилия, @Jonas!

Ответ №2:

Вы можете начать с графика компаса: http://www.mathworks.com/help/techdoc/ref/compass.html или полярный сюжет: http://www.mathworks.com/help/techdoc/ref/polar.html . Другой вариант: http://undocumentedmatlab.com/blog/jfreechart-graphs-and-gauges / .