2008-10-22 11 views

Respuesta

6

Así es como pude hacerlo.

La trama polar de MATLAB (si mira las opciones de gráficos de la manija disponibles) no tiene nada como xlim o ylim. Sin embargo, me di cuenta que lo primero que representa conjuntos de la gama, así que era capaz de trazar una función con intervalo de radios de [-.5 0.5] en un [-1 1] trama como sigue:

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

Eso no se ve muy bien y espero que haya una mejor manera de hacerlo, pero funciona.

+0

Eso es inteligente. Gracias. Me sorprende que no proporcionen un control más directo sobre el radio. –

+0

Yo también - No creo que querer ajustar el radio sería * que * raro –

+2

He encontrado la misma solución. Desafortunadamente, no definen una trama polar como un tipo de gráfico base, sino que crean parches para dibujar los ejes y transformar sus datos en xey. Eche un vistazo al código de polar.m alguna vez y verá. –

8

Esto funcionó para mí ... yo quería que el intervalo de radios de ir a 30, por lo que primero trazó esta

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

y luego trazó lo que estaba realmente interesado en. Este primer punto trazado se esconde detrás las marcas de la cuadrícula simplemente asegúrese de incluir

hold off 

después de su comando de trazado final.

+0

Aprecio la simplicidad de esta respuesta. ¡Trabajado como un encanto! – Shinobii

4

En el caso de cualquier otra persona se encuentra con esto, aquí está la solución:

Como escocés T y gnovice señaló, Matlab, básicamente, utiliza la función polar como una interfaz para parcelas estándar , pero con mucho formato detrás de las escenas para que se vea polar. Mire los valores de las propiedades XLim e YLim de un diagrama polar y notará que son literalmente los límites xey de su trazado en coordenadas cartesianas. Por lo tanto, para establecer un límite de radio, utilice xlim y ylim, o eje, y ser inteligentes acerca de los valores establecidos:

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

... eso es todo lo que hay que hacer. Happy Matlabbing :)

6

La solución simple es hacer un gráfico falso y establecer su color en blanco.

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

real=10; 
polar(0,real,'w'); 
Cuestiones relacionadas