Я використовую Езполяр функцію, щоб побудувати графіку. Три з них мають максимальне значення 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]);