2008-10-22 10 views

Odpowiedz

6

Oto jak udało mi się to zrobić.

Wykres polarny MATLAB (jeśli spojrzeć na dostępne opcje obsługi rączki) nie ma niczego takiego jak xlim lub ylim. Jednakże, to sobie sprawę, że pierwszy, co na wykresie ustawia zakres, tak że w stanie sporządzić z zakresu funkcji promienia [-.5 .5] w [-1 1] działki jak następuje:

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'); 

że nie wygląda zbyt dobrze i mam nadzieję, że jest lepszy sposób na zrobienie tego, ale działa.

+0

To sprytnie. Dzięki. Jestem zaskoczony, że nie zapewniają bardziej bezpośredniej kontroli nad promieniem. –

+0

Ja też - nie sądzę, że chcąc poprawić poziom promienia, będzie to * to * rzadkie –

+2

. Wymyśliłem to samo rozwiązanie. Niestety nie definiują one wykresu polarnego jako typu podstawowego, zamiast tworzyć łatki do rysowania osi i przekształcania danych na x i y. Rzuć okiem na kod polar.m, a zobaczysz. –

8

ten pracował dla mnie ... Chciałem zasięgu promienia, aby przejść do 30, więc najpierw wykreślono ten

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

a następnie wykreślono co ja rzeczywiście zainteresowany. Ten pierwszy wykreślono punkt jest ukryty za znaki siatki. pamiętaj, aby po ostatnim komendzie kreślenia dodać

hold off 

.

+0

Doceniam prostotę tej odpowiedzi. Pracował jak urok! – Shinobii

4

W przypadku ktokolwiek inny spotyka to, oto rozwiązanie:

Jak Scottie T i gnovice wskazał, Matlab zasadzie wykorzystuje funkcję polarną jako interfejs dla standardowych działek , ale z wieloma formatami za kulisami, aby wyglądały na polarne. Przyjrzyj się wartościom właściwości XLim i YLim wykresu polarnego, a zauważysz, że są to dosłownie granice xi y twojego wykresu we współrzędnych kartezjańskich. Tak więc, aby ustawić limit promienia, użyj xlim i ylim lub oś, i być inteligentnym o wartościach ustawionych:

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

... to wszystko jest do niego. Happy Matlabbing :)

6

Prostym rozwiązaniem jest wykonanie fałszywego wykresu i ustawienie jego koloru na biały.

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

real=10; 
polar(0,real,'w'); 
Powiązane problemy