/ / Езполярні сюжети функціонують рядом над полярними осями - matlab, matlab-figure

Ezpolar смуги функцій рядка по полярних осей - Matlab, MATLAB-фігура

Я використовую Езполяр функцію, щоб побудувати графіку. Три з них мають максимальне значення 4, але останній має лише трохи більше 2.

Коли я будую їх, останній будується з функцією над ним (здається, ніби ezpolar малює його деякими пікселями після того, як це значення максимуму використовується як радіус).

Код та генерований сюжет

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

Якщо я не використовую цей підзапуск, використовуючи повний figure малювати графіку здається прекрасним. Однак, оскільки мені потрібно зібрати всіх чотирьох разом, це призведе до (витягнутиме лише проблематичне, subplot 2,2,4):

Зображення накреслено

Як ти бачиш, r = 0.25 (5 - 4...) побудовано трохи над полярними осями.

Чому це відбувається? Як я можу це виправити?

Відповіді:

1 для відповіді № 1

Здається, проблема полягає у позиції цього анотації та тому, що коли ви використовуєте subplot, обмеження на радіус полярної ділянки насправді змінюються, але положення анотації не.

Для боротьби з цим можна фактично обчислити межі осей та змінити положення тексту, щоб воно було явно поза сюжетом.

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

введіть опис зображення тут

Кращим способом зробити це було б змінити Units етикетки для використання Normalized одиниці (відносно осей), а не Data одиниць. Таким чином, він не зміниться, якщо зміниться межа осей.

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