在非等轴上绘制注释箭头

时间:2018-12-31 22:17:05

标签: matlab matlab-figure

这是我的问题的MCVE:

ax = axes('XLim',[0 20],'YLim',[0 10]);
arrStart = [5 5];
arrLength = 3;
arrDir = pi/4:pi/3:2*pi;
arrEnd = [cos(arrDir)*arrLength+arrStart(1)
          sin(arrDir)*arrLength+arrStart(2)];
for k = 1:size(arrEnd,2)
    arr = annotation('arrow',...
        'X',[arrStart(1) arrEnd(1,k)],...
        'Y',[arrStart(2) arrEnd(2,k)]);
    arr.Parent = ax;
end

上面的代码创建下图:

arrows

您可以轻松地看到没有一个箭头与箭头的尾部正确对齐。经过对该问题的一些研究,我发现其原因是轴的长度不同(X比Y长两倍)。因此,如果我将两个轴都设置为相同的限制,问题就会消失:

arrows-2

但是在我要制作的图中(比本示例要复杂得多),我需要使轴具有不同的限制。

有什么办法解决这个问题吗?

p.s:使用“标准化”单位我看不到此问题,但是为箭头设置正确的位置很麻烦...

我正在使用MatLab R2017a。

1 个答案:

答案 0 :(得分:1)

注释适用于图形,uipanel或uitab,而不适用于轴。将父轴更改为轴可能不在该功能的预期使用范围内。我会按照注释中的建议使用File Exchange上的一种替代方法来在轴内创建箭头。

或者,您可以使用red函数(但是也不推荐使用):

quiver

arrows plotted using quiver