аннотация в сюжете Matlab - PullRequest
       20

аннотация в сюжете Matlab

4 голосов
/ 09 апреля 2010

Мне просто интересно, как добавить аннотацию в сюжет matlab? Вот мой код:

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

Но стрелка указывает на неправильное место. Как я могу это исправить? И есть ли лучшая идея для аннотирования сюжета?

Спасибо и всего наилучшего!


EDIT:

Я только что видел из справочного документа:

annotation ('line', x, y) создает объект аннотации линии, который простирается от точки, определенной x (1), y (1), до точки, определенной x (2), y (2), указанной в нормализованных единицах измерения.

В моем коде я хотел бы, чтобы стрелка указывала на точку (x, y), которая рисуется plot (), но аннотация интерпретирует значения x и y как в нормализованных единицах измерения. Поэтому я думаю, что это является причиной проблемы. Как я могу указать правильные координаты для аннотации?

Ответы [ 3 ]

7 голосов
/ 09 апреля 2010

Во-первых, вам нужно найти положение осей в нормализованных единицах измерения. К счастью, они установлены по умолчанию.

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

axPos is [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 для вашей аннотации.

4 голосов
/ 12 сентября 2010

Другой способ получить нормализованные координаты фигур - использовать Пространство данных для преобразования единиц измерения (ds2nfu) отправка в FileExchange.

[xa ya] = ds2nfu(x,y);
1 голос
/ 24 июля 2016

У меня были некоторые проблемы с пониманием нормализованных координат, пока я не понял, что координаты (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])

График с координатами стрелки (0,0) и (1,1)

...