2010-04-08 77 views
4

我只是想知道如何在matlab圖中添加註釋?這裏是我的代碼:在matlab中的註解plot

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

但是箭頭指向錯誤的地方。我該如何解決它?還有任何更好的想法來標註情節?

感謝和問候!


編輯:

我剛剛從幫助文檔看到:

註釋( '線',X,Y)創建一個由X定義的點延伸的線註釋對象(1),y(1)到由x(2),y(2)定義的點,以歸一化的數字單位指定。

在我的代碼中,我希望箭頭指向由plot()繪製的點(x,y),但註釋以標準化的圖形單位解釋x和y的值。所以我認爲這是導致問題的原因。我怎樣才能指定正確的座標來註釋?

+0

你的意思是 「放錯了地方」 有什麼辦法? – Pyrolistical 2010-04-08 21:36:38

+0

我認爲annotation()以標準化的單位解釋其參數。這就是我遇到問題的原因。 – Tim 2010-04-08 21:46:05

回答

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

我聲稱'xMinMax(2)'實際上應該是'(xMinMax(2)-xMinMax(1))',對於'yMinMax(2)'也是如此。 – Artelius 2010-09-12 08:56:33

+0

@Artelius:很好! – Jonas 2010-09-12 13:00:44

1

我遇到了一些麻煩理解歸一化座標,直到我意識到,座標爲(0,0)和(1,1)分別左下角和完整的情節窗口的右上角,不只是情節。下面的代碼片段和截圖可能會幫助其他人想知道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)