/ / Ezpolar zeigt den Funktionsstring über den Polarachsen - Matlab, Matlab-Figur

Ezpolar zeigt die Funktionszeichenfolge über den Polarachsen - Matlab, Matlab-Figur

Ich benutze Ezpolar Funktion, um einige Grafiken zu zeichnen. Drei von ihnen haben den Maximalwert 4, aber der letzte hat nur etwas mehr als 2.

Wenn ich sie plottiere, wird der letzte mit der Funktion darüber geplottet (scheint als ob ezpolar malt einige Pixel nach dem als Radius verwendeten Maximalwert).

Code und generiertes Diagramm

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

Wenn ich dieses Subplot nicht verwende, verwende ich eine komplette figure die Grafiken zeichnen Sieht gut aus. Da ich jedoch alle vier zusammen haben muss, führt dies zu (zieht nur die problematische subplot 2,2,4):

Bild geplottet

Wie du siehst, r = 0.25 (5 - 4...) ist gerade über den Polarachsen aufgetragen.

Warum passiert das? Wie kann ich es reparieren?

Antworten:

1 für die Antwort № 1

Das Problem scheint mit der Position dieser Anmerkung und der Tatsache zu sein, dass bei Verwendung von a subplottatsächlich ändern sich die Grenzen des Radius des Polardiagramms, aber die Position der Anmerkung nicht.

Um dies zu bekämpfen, könnten Sie tatsächlich die Grenzen der Achsen berechnen und die Position des Textes so ändern, dass er explizit außerhalb der Darstellung liegt.

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

Bildbeschreibung hier eingeben

Ein besserer Weg, dies zu tun, wäre die Änderung der Units des zu verwendenden Etiketts Normalized Einheiten (relativ zu den Achsen) und nicht Data Einheiten. Auf diese Weise wird es nicht geändert, wenn sich die Achsengrenzen ändern.

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