フィルターのクリア

How do you make a line with an arrow halfway between 2 points?

3 ビュー (過去 30 日間)
Kulan Sinclair
Kulan Sinclair 2018 年 7 月 10 日
編集済み: jonas 2018 年 7 月 10 日
i'm looking for something like. [p1] ------>-----[p2]

回答 (1 件)

jonas
jonas 2018 年 7 月 10 日
編集済み: jonas 2018 年 7 月 10 日
Let's say you want an arrow from between [X1 X2],[Y1 Y2]. We use annotation but specify the arrow coordinates by the axes coordinates (instead of the default figure coordinates)
x=0:.05:2*pi;
y=sin(x);
h=plot(x,y)
X=[0 4]; %[X1 X2]
Y=[0.5 -0.5]; %[Y1 Y2]
Pos=get(gca,'position');
xlimits=get(gca,'xlim');
xmin=xlimits(1);
xmax=xlimits(2);
AxesRangeX=diff(xlimits)
FigPosX=Pos(1)+(X-xmin)*(Pos(3)/AxesRangeX)
ylimits=get(gca,'ylim');
ymin=ylimits(1);
ymax=ylimits(2);
AxesRangeY=diff(ylimits)
FigPosY=Pos(2)+(Y-ymin)*(Pos(4)/AxesRangeY)
dX=diff(FigPosX);
dY=diff(FigPosY);
annotation('arrow',FigPosX,FigPosY,'headstyle','none')
annotation('arrow',FigPosX-[0 dX./2],FigPosY-[0 dY./2])
  2 件のコメント
Kulan Sinclair
Kulan Sinclair 2018 年 7 月 10 日
the problem with annotate is it ignores the bounds of the figure and doesn't operate with the same units as the rest of the figure(or plots contained within it) it's easy enough to scale a number so it is a ratio between 0 and 1 but wen 0 is some indeterminate distance outside the plot and 1 is also outside the plot. scaling it to fit within the bounds of a plot when i don't know how large the plot is going to be relative to the size of the figure is difficult. i'm thinking quiver is going to be my best option but i was hoping to a different linestyle for a normal plot.
jonas
jonas 2018 年 7 月 10 日
編集済み: jonas 2018 年 7 月 10 日
I've updated the code. You can now plot the arrow by specifying values in reference to the axes.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLine Plots についてさらに検索

製品


リリース

R2017a

Community Treasure Hunt

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

Start Hunting!

Translated by