/ / Ezpolar traza la cadena de la función sobre los ejes polares - matlab, matlab-figure

Los diagramas de Ezpolar funcionan la cadena sobre los ejes polares - matlab, matlab-figure

Estoy usando Ezpolar Función para trazar algunos gráficos. Tres de ellos tienen un valor máximo de 4, pero el último solo tiene un poco más de 2.

Cuando los grafico, el último se traza con su función (parece como si ezpolar lo pinta algunos pixeles despues de su valor maxium usado como radio).

Codigo y Parcela Generada

% This subplot is used since I"ve 4 graphics to draw.
subplot(2,2,4)
ezpolar("0.25*(5 - 4*cosd(-180 * sin(t) ))");
title("D")

Si no uso esta trama secundaria, usaré una figure dibujar los gráficos se ve bien. Sin embargo, ya que necesito tener los cuatro juntos, esto resulta en (dibujará solo la problemática, subplot 2,2,4)

Imagen trazada

Como puedes ver, r = 0.25 (5 - 4...) se traza justo sobre los ejes polares.

¿Por qué está sucediendo? ¿Cómo puedo arreglarlo?

Respuestas

1 para la respuesta № 1

El problema parece ser con la posición de esa anotación y el hecho de que cuando se utiliza un subplot, los límites en el radio del gráfico polar realmente cambian pero la posición de la anotación no.

Para combatir esto, realmente podría calcular los límites de los ejes y cambiar la posición del texto para que esté explícitamente fuera de la trama.

hax = subplot(2,2,4);
p = ezpolar("0.25*(5 - 4*cosd(-180 * sin(t) ))");

% Get the handle to the label text object
label = findobj(hax, "type", "text");

% Figure out the current axes limits
ylims = get(hax, "ylim");

% Add some padding (as a percent) to the position
padding = 0.2;
set(label, "Position", [0 ylims(1)*(1 + padding), 0]);

enter image description here

Una mejor manera de hacer esto sería cambiar la Units de la etiqueta a utilizar Normalized Unidades (relativas a los ejes) en lugar de Data unidades. De esta manera, no cambiará si cambian los límites de los ejes.

hax = subplot(2,2,4);
p = ezpolar("0.25*(5 - 4*cosd(-180 * sin(t) ))");

% Get the handle to the label text object
label = findobj(hax, "type", "text");

set(label, "Units", "Normalized", "Position", [0.5, -0.2]);