Как отметить точку на графике MATLAB?
У меня есть этот сюжет
[Полное Разрешение]
Мне нужно сделать прямой вертикальный линия в точке на оси x, что пользователь вводит и показать координаты пересечения этой вертикальной линии с моим участком.
Как это можно сделать в MATLAB?
например: потребитель входит в 1020 после этого прямая вертикальная линия будет нарисованный в 1020, который встречает график в какой-то точке, и координаты этой точки будут показаны каким-то образом.
3 ответов
один из способов сделать это-использовать 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-значения графика являются просто индексами в массиве данных, который вы строите, что, по-видимому, относится к графику, который вы показываете выше.
попробуйте что-то вроде:
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);
код не тестируется и предполагает, что ваш рисунок является текущим, построенные данные хранятся в массиве "данные" и что исходный график был выполнен без указания дополнительного X-вектора.
вы также можете использовать функции hline
и vline,
которые можно скачать с: http://www.mathworks.com/matlabcentral/fileexchange/1039-hline-and-vline
Они делают практически то же самое для вас.