Сохраните указанную ниже функцию в m-файле на вашем пути с именем addPoint.m и введите в командной строке следующее:
>> hFigure = figure;
>> hAxes = axes('Parent', hFigure);
>> set(hAxes, 'ButtonDownFcn', @addPoint);
Это создает оси, которые будут выполнять addPoint при каждом нажатии на оси. addPoint создает линию, если ее еще нет, получает координаты точки, по которой щелкнули, и добавляет эти координаты к свойствам XData
и YData
линии.
function addPoint(hObject, eventdata)
% Get the clicked point.
currentPoint = get(hObject, 'CurrentPoint');
% Get the handle to the plotted line. Create a line if one doesn't exist
% yet.
hLine = get(hObject, 'Children');
if isempty(hLine)
hLine = line(0, 0, ...
'Parent', hObject, ...
'Marker', 's', ...
'MarkerEdgeColor', 'r');
end
% Temporarily set the axes units to normalized.
axesUnits = get(hObject, 'Units');
set(hObject, 'Units', 'normalized');
% Get the clicked point and add it to the plotted line.
data(:,1) = get(hLine, 'XData');
data(:,2) = get(hLine, 'YData');
data(end+1,:) = [currentPoint(1,1) currentPoint(1,2)];
data = sortrows(data, 1);
set(hLine, 'XData', data(:,1), 'YData', data(:,2));
% Reset the axes units.
set(hObject, 'Units', axesUnits);
Это можно улучшить, запретив автоматическое обновление границ осей после первого щелчка.