6 Stimmen

Beschriftung in Matlab-Plot

Ich frage mich nur, wie man in Matlab-Plots Anmerkungen hinzufügen kann? Hier ist mein Code:

plot(x,y);  
annotation('textarrow',[x, x+0.05],[y,y+0.05],'String','my point','FontSize',14);

Aber der Pfeil zeigt auf die falsche Stelle. Wie kann ich das ändern? Und gibt es eine bessere Idee für die Beschriftung eines Plots?

Vielen Dank und herzliche Grüße!


EDIT。

Ich habe gerade im Hilfedokument nachgesehen:

annotation('line',x,y) erzeugt ein Linien-Anmerkungsobjekt, das sich von dem durch x(1),y(1) definierten Punkt bis zu dem durch x(2),y(2) definierten Punkt erstreckt und in normalisierten Zahleneinheiten angegeben wird.

In meinem Code möchte ich, dass der Pfeil auf den Punkt (x,y) zeigt, der von plot() gezeichnet wird, aber annotation interpretiert die Werte von x und y als normalisierte Zahleneinheiten. Ich denke, das ist die Ursache des Problems. Wie kann ich die korrekten Koordinaten in annotation angeben?

10voto

Jonas Punkte 74252

Zunächst müssen Sie die Position der Achsen in normalisierten Zahleneinheiten ermitteln. Glücklicherweise sind sie standardmäßig auf "normalisiert" eingestellt.

axPos = get(gca,'Position'); %# gca gets the handle to the current axes

axPos ist [xMin,yMin,xExtent,yExtent]

Dann erhalten Sie die Grenzwerte, d. h. Minimum und Maximum der Achsen.

xMinMax = xlim;
yMinMax = ylim;

Schließlich können Sie die Anmerkungen x und y aus dem Plot x und y berechnen.

xAnnotation = axPos(1) + ((xPlot - xMinMax(1))/(xMinMax(2)-xMinMax(1))) * axPos(3);
yAnnotation = axPos(2) + ((yPlot - yMinMax(1))/(yMinMax(2)-yMinMax(1))) * axPos(4);

Verwenden Sie xAnnotation und yAnnotation als x- und y-Koordinaten für Ihre Anmerkung.

5voto

yuk Punkte 18683

Eine andere Möglichkeit, normalisierte Figurenkoordinaten zu erhalten, ist die Verwendung von Umrechnung von Datenraum in Zahleneinheiten (ds2nfu) Einreichung über FileExchange.

[xa ya] = ds2nfu(x,y);

3voto

lokxs Punkte 171

Ich hatte einige Schwierigkeiten, die normalisierten Koordinaten zu verstehen, bis mir klar wurde, dass die Koordinaten (0,0) und (1,1) die linke untere Ecke bzw. die rechte obere Ecke des gesamten Plot-Fensters sind, nicht nur des Plots. Der folgende Ausschnitt und der Screenshot könnten anderen helfen, die sich fragen, wo die 0 beginnt und die 1 endet.

x = -1:0.1:1;
y = x.^2;
plot (x,y)
xlabel('time [s]')
ylabel('amplitude')
title('My nice plot')
legend('y(t)')
grid on
annotation('arrow', [0 1], [0 1])

Plot mit Pfeilkoordinaten (0,0) und (1,1)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X