matlab图中的注释

时间:2010-04-08 21:33:40

标签: matlab plot annotations

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

plot(x,y);  
annotation('textarrow',[x, x+0.05],[y,y+0.05],'String','my point','FontSize',14);

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

谢谢和问候!


编辑:

我刚从帮助文档中看到:

  

注释('line',x,y)创建一个行注释对象,该对象从x(1),y(1)定义的点延伸到由x(2),y(2)定义的点,指定在标准化的数字单位。

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

3 个答案:

答案 0 :(得分:7)

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

axPos = get(gca,'Position'); %# gca gets the handle to the current axes

axPos是[xMin,yMin,xExtent,yExtent]

然后,你得到极限,即轴的最小值和最大值。

xMinMax = xlim;
yMinMax = ylim;

最后,您可以从图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);

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

答案 1 :(得分:4)

获得规范化图形坐标的另一种方法是在FileExchange上使用Data space to figure units conversion (ds2nfu)提交。

[xa ya] = ds2nfu(x,y);

答案 2 :(得分:1)

我在理解标准化坐标时遇到了一些麻烦,直到我意识到坐标(0,0)和(1,1)分别是COMPLETE绘图窗口的左下角和右上角,而不仅仅是绘图。下面的代码片段和屏幕截图可能会帮助那些一直想知道0开始和1结束的人。

x = -1:0.1:1;
y = x.^2;
plot (x,y)
xlabel('time [s]')
ylabel('amplitude')
title('My nice plot')
legend('y(t)')
grid on
annotation('arrow', [0 1], [0 1])

Plot with arrow coordinates (0,0) and (1,1)