Фиксация радиальной оси на полярных участках MATLAB - PullRequest
15 голосов
/ 22 октября 2008

Я использую полярные графики (POLAR (THETA, RHO)) в MATLAB.

Есть ли простой способ установить диапазон радиальной оси, скажем, 1,5?

Я ищу что-то аналогичное командам xlim, ylim для декартовых осей. В документах еще ничего не найдено.

Ответы [ 4 ]

8 голосов
/ 31 августа 2009

это сработало для меня ... я хотел, чтобы диапазон радиуса пошел до 30, поэтому я сначала построил это

polar(0,30,'-k')
hold on

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

hold off

после вашей последней команды построения.

6 голосов
/ 12 сентября 2012

Простое решение - создать фальшивый график и установить его цвет на белый.

fake=100;
polar(0,fake,'w');
hold on;

real=10;
polar(0,real,'w');
6 голосов
/ 22 октября 2008

Вот как я смог это сделать.

Полярная диаграмма MATLAB (если вы посмотрите на доступные параметры Handle Graphics) не имеет ничего подобного xlim или ylim. Однако я понял, что первое, что нанесено на график, устанавливает диапазон, поэтому я смог построить функцию с радиусом [-.5 .5] на графике [-1 1] следующим образом:

theta  = linspace(0,2*pi,100);
r      = sin(2*theta) .* cos(2*theta);
r_max  = 1;
h_fake = polar(theta,r_max*ones(size(theta)));
hold on;
h      = polar(theta, r);
set(h_fake, 'Visible', 'Off');

Это выглядит не очень хорошо, и, надеюсь, есть лучший способ сделать это, но это работает.

4 голосов
/ 02 января 2010

В случае, если кто-то еще сталкивается с этим, вот решение :

Как указано Скотти Т и gnovice , Matlab в основном использует полярную функцию в качестве интерфейса для стандартных графиков, но с много форматирования за кулисами, чтобы он выглядел полярно. Посмотрите на значения свойств XLim и YLim полярного графика, и вы заметите, что они буквально являются границами x и y вашего графика в декартовых координатах. Итак, чтобы установить предел радиуса, используйте xlim и ylim или ось, и будьте внимательны с установленными значениями:

rlim = 10;
axis([-1 1 -1 1]*rlim);

... это все, что нужно сделать. Happy Matlabbing:)

...