/ / Ezpolar wykres funkcji na osiach polarnych - matlab, matlab-rysunek

Ezpolar tworzy ciąg funkcyjny nad osiami biegunowymi - matlab, matlab-figure

Używam Ezpolar funkcja w celu wykreślenia niektórych grafik. Trzy z nich mają wartość maksymalną 4, ale ostatnia ma tylko trochę więcej niż 2.

Kiedy je kreślę, ostatni jest wykreślany z jego funkcją nad nim (wydaje się, jakby ezpolar maluje niektóre piksele po maksymalnej wartości użytej jako promień).

Kod i wygenerowana fabuła

% 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")

Jeśli nie korzystam z tego wątku, użyj kompletnego figure narysować grafikę wydaje się w porządku. Ponieważ jednak muszę mieć wszystkie cztery razem, powoduje to (narysuje tylko problematyczną, subplot 2,2,4):

Obraz wykreślony

Jak widzisz, r = 0.25 (5 - 4...) jest wykreślony tuż nad osiami biegunowymi.

Dlaczego tak się dzieje? Jak mogę to naprawić?

Odpowiedzi:

1 dla odpowiedzi № 1

Wydaje się, że problem dotyczy pozycji tej adnotacji i faktu, że podczas używania a subplot, granice promienia wykresu biegunowego faktycznie się zmieniają, ale pozycja adnotacji nie.

Aby temu przeciwdziałać, można faktycznie obliczyć granice osi i zmienić położenie tekstu, aby było wyraźnie poza polem.

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

wprowadź opis obrazu tutaj

Lepszym sposobem na to jest zmiana Units etykiety do użycia Normalized jednostki (względem osi), a nie Data jednostki. W ten sposób nie zmieni się, jeśli ograniczenia osi ulegną zmianie.

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