箭頭

首先,可以使用 quiver ,其中一個不需要使用 annotation 處理不方便的標準化數字單位

drawArrow = @(x,y) quiver( x(1),y(1),x(2)-x(1),y(2)-y(1),0 )    

x1 = [10 30];
y1 = [10 30];

drawArrow(x1,y1); hold on

x2 = [25 15];
y2 = [15 25];

drawArrow(x2,y2)

在此處輸入影象描述

重要的是 quiver:0 的第 5 個引數,它禁用其他預設縮放,因為此函式通常用於繪製向量欄位。 (或使用屬性值對'AutoScale','off'

還可以新增其他功能:

drawArrow = @(x,y,varargin) quiver( x(1),y(1),x(2)-x(1),y(2)-y(1),0, varargin{:} )       
drawArrow(x1,y1); hold on
drawArrow(x2,y2,'linewidth',3,'color','r')

StackOverflow 文件

如果需要不同的箭頭,則需要使用註釋(這個答案可能有用如何更改箭袋圖中的箭頭樣式? )。

可以使用'MaxHeadSize'屬性調整箭頭大小。不幸的是,它並不一致。之後需要設定軸限制。

x1 = [10 30];
y1 = [10 30];
drawArrow(x1,y1,{'MaxHeadSize',0.8,'Color','b','LineWidth',3}); hold on

x2 = [25 15];
y2 = [15 25];
drawArrow(x2,y2,{'MaxHeadSize',10,'Color','r','LineWidth',3}); hold on

xlim([1, 100])
ylim([1, 100])

在此處輸入影象描述

可調箭頭有另一個調整:

function [ h ] = drawArrow( x,y,xlimits,ylimits,props )

xlim(xlimits)
ylim(ylimits)

h = annotation('arrow');
set(h,'parent', gca, ...
    'position', [x(1),y(1),x(2)-x(1),y(2)-y(1)], ...
    'HeadLength', 10, 'HeadWidth', 10, 'HeadStyle', 'cback1', ...
    props{:} );

end

你可以從你的指令碼呼叫如下:

drawArrow(x1,y1,[1, 100],[1, 100],{'Color','b','LineWidth',3}); hold on
drawArrow(x2,y2,[1, 100],[1, 100],{'Color','r','LineWidth',3}); hold on

在此處輸入影象描述