Как отметить точку на графике MATLAB? - PullRequest
9 голосов
/ 04 октября 2009

У меня есть этот участок

[ Полное разрешение ]

alt text

Мне нужно сделать прямую вертикальную линию в точке на оси x, в которую пользователь вводит и показывают координаты пересечения этой вертикальной линии с моим сюжетом.

Как это можно сделать в MATLAB?

например: пользователь вводит 1020, тогда в 1020 будет проведена прямая вертикальная линия, которая соответствует графику в некоторой точке, и координаты этой точки будут показаны каким-либо образом.

Ответы [ 3 ]

5 голосов
/ 04 октября 2009

Один из способов сделать это - использовать функцию GINPUT для графического выбора точки с помощью мыши. Предполагая, что данные, которые вы вычерчивали, хранятся в переменной data, следующий код должен делать то, что вам нужно.

set(gca,'XLimMode','manual','YLimMode','manual');  % Fix axes limits
hold on;
[x,y] = ginput(1);  % Select a point with the mouse
x = round(x);       % Round x to nearest integer value
y = data(x);        % Get y data of intersection
plot([x x],get(gca,'YLim'),'k--');  % Plot dashed line
plot(x,y,'r*');     % Mark intersection with red asterisk
disp('Intersection coordinates:');
disp([x y]);        % Display the intersection point

В приведенном выше предположении предполагается, что значения x графика представляют собой просто индексы в массиве данных, которые вы изображаете, что, как представляется, имеет место на графике, который вы показываете выше.

3 голосов
/ 04 октября 2009

Попробуйте что-то вроде:

x = 1020;

% plot a vertical line
ylimits = get(gca, 'YLim');
hold on;
plot([x x], ylimits, 'k');

% mark the intersection with the plot
plot(x, data(x), 'ro');
annot = sprintf('Intersection: x=%f, y=%f', x, data(x));
text(x, data(x), annot);

Код не проверен и предполагает, что ваша фигура является текущей, построенные данные хранятся в массиве «data» и что исходный график был выполнен без указания дополнительного x-вектора.

0 голосов
/ 29 октября 2014

Вы также можете использовать функции hline и vline,, которые можно загрузить с: http://www.mathworks.com/matlabcentral/fileexchange/1039-hline-and-vline

Они делают практически то же самое для вас.

...