Borrar filtros
Borrar filtros

Arrow between several points

53 visualizaciones (últimos 30 días)
ABCDEFG HIJKLMN
ABCDEFG HIJKLMN el 14 de Feb. de 2022
Respondida: Matt J el 14 de Feb. de 2022
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!

Respuesta aceptada

Matt J
Matt J el 14 de Feb. de 2022
You can use the annotation() command.
  4 comentarios
ABCDEFG HIJKLMN
ABCDEFG HIJKLMN el 14 de Feb. de 2022
I would like to know how to do this automatically, that's what I was asking.
Matt J
Matt J el 14 de Feb. de 2022
Editada: Matt J el 14 de Feb. de 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...

Iniciar sesión para comentar.

Más respuestas (1)

Matt J
Matt J el 14 de Feb. de 2022
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

Categorías

Más información sobre 2-D and 3-D Plots en Help Center y File Exchange.

Productos


Versión

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by