I want to plot the evolution of a solution on a graph.
I have constructed a vector of x and y coordinates as rows, changing every column (at every iteration).
I would like to plot all the points but add arrows in the midpoint between each solution. Something like this:
Is this possible? Thanks in advance!

 Akzeptierte Antwort

Matt J
Matt J am 14 Feb. 2022

0 Stimmen

You can use the annotation() command.

4 Kommentare

ABCDEFG HIJKLMN
ABCDEFG HIJKLMN am 14 Feb. 2022
Thank you for your answer. Could you please explain to me how this command works?
Matt J
Matt J am 14 Feb. 2022
Explain beyond what you see in the documentaiton?
If so, what specifically?
ABCDEFG HIJKLMN
ABCDEFG HIJKLMN am 14 Feb. 2022
I would like to know how to do this automatically, that's what I was asking.
Matt J
Matt J am 14 Feb. 2022
Bearbeitet: Matt J am 14 Feb. 2022
The annotation command will let you draw an arrow between any two specified points. You can use the attached file data2units to convert the data coordinates to the units required by the annotation command, e.g.,
h=plot(2:6,'o'); axis equal
[X,Y]=data2units(gca,h.XData,h.YData);
Xmid=X(1:end-1)/2 + X(2:end)/2;
Ymid=Y(1:end-1)/2 + Y(2:end)/2;
annotation('arrow', [X(1), Xmid(1)],[Y(1), Ymid(1)])
annotation('arrow', [Xmid(1), X(2)],[Ymid(1), Y(2)])
%etc...

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Matt J
Matt J am 14 Feb. 2022

0 Stimmen

It might be easier just to use quiver().
h=plot(2:6,'o'); axis equal
[X,Y]=deal(h.XData, h.YData);
q=(1:0.5:numel(X))';
X=interp1(X(:),q); Y=interp1(Y(:),q);
hold on
quiver(X(1:end-1),Y(1:end-1), diff(X), diff(Y),'off')
hold off

Produkte

Version

R2021a

Gefragt:

am 14 Feb. 2022

Beantwortet:

am 14 Feb. 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by