matlab图中的注释

Tim*_*Tim 5 matlab plot annotations

我只是想知道如何在matlab中添加注释?这是我的代码:

plot(x,y);  
annotation('textarrow',[x, x+0.05],[y,y+0.05],'String','my point','FontSize',14);
Run Code Online (Sandbox Code Playgroud)

但箭头指向错误的地方.我该如何解决?还有更好的想法来注释情节?

感谢致敬!


编辑:

我刚刚从帮助文档中看到:

注释('line',x,y)创建一个行注释对象,该对象从x(1),y(1)定义的点延伸到由x(2),y(2)定义的点,在规范化图中指定单位.

在我的代码中,我希望箭头指向由plot()绘制的点(x,y),但是注释将x和y的值解释为标准化的图形单位.所以我认为这就是导致问题的原因.如何为注释指定正确的坐标?

Jon*_*nas 8

首先,您需要以标准化的数字单位找到轴的位置.幸运的是,它们默认设置为"标准化".

axPos = get(gca,'Position'); %# gca gets the handle to the current axes
Run Code Online (Sandbox Code Playgroud)

axPos是 [xMin,yMin,xExtent,yExtent]

然后,您将获得限制,即轴的最小值和最大值.

xMinMax = xlim;
yMinMax = ylim;
Run Code Online (Sandbox Code Playgroud)

最后,您可以从图x和y计算注释x和y.

xAnnotation = axPos(1) + ((xPlot - xMinMax(1))/(xMinMax(2)-xMinMax(1))) * axPos(3);
yAnnotation = axPos(2) + ((yPlot - yMinMax(1))/(yMinMax(2)-yMinMax(1))) * axPos(4);
Run Code Online (Sandbox Code Playgroud)

使用xAnnotation和yAnnotation作为注释的x和y坐标.


yuk*_*yuk 5

获取标准化图形坐标的另一种方法是使用数据空间在FileExchange进行图形单位转换(ds2nfu)提交。

[xa ya] = ds2nfu(x,y);
Run Code Online (Sandbox Code Playgroud)