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的值解释为标准化的图形单位.所以我认为这就是导致问题的原因.如何为注释指定正确的坐标?
首先,您需要以标准化的数字单位找到轴的位置.幸运的是,它们默认设置为"标准化".
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坐标.
获取标准化图形坐标的另一种方法是使用数据空间在FileExchange上进行图形单位转换(ds2nfu)提交。
[xa ya] = ds2nfu(x,y);
Run Code Online (Sandbox Code Playgroud)