How to remove a plot (if it exists) before replotting? Matlab GUI ButtonDownFcn
2 views (last 30 days)
Show older comments
Hy, I want to plot a point on mouse-cklick using the ButtonDownFcn. Before it is plotted it should check if there is an existing point. If yes, delete it and plot new point else just plot.
Here my ButtonDownFcn without removing and display of the coordinates in a static text:
function print_coordinates(hObject,eventdata,handles)
C=get(gca,'CurrentPoint');
set(handles.textCoordinates,'Visible','on');
set(handles.textCoordinates,'String',['X: ',num2str(C(1,1)),...
char(10),'Y: ',num2str(C(1,2))]);
hold on
hCoord=plot(C(1,1),C(1,2),'o','Color','r',...
'LineWidth',1.5)
How can i do this?
0 Comments
Accepted Answer
Michael Haderlein
on 17 Sep 2014
I would create such a point right at the start of the program. Use the coordinates (0,NaN) to keep it invisible and save the handle of the plot. Then, in your buttondownfunction, you can simply change the xdata/ydata properties to the values of C.
4 Comments
Michael Haderlein
on 17 Sep 2014
As Adam said, you need to provide the handle of hCoord. The point where to plot is the OpeningFcn of your figure, such that it reads as
% Choose default command line output for test
handles.output = hObject;
hold(handles.axes1,'all') %NEW
hCoord=plot(0,nan,'ro'); %NEW
handles.hCoord=hCoord; %NEW
% Update handles structure
guidata(hObject, handles);
Do not set the visible property 'off'. It will be invisible as the y-data is NaN. It will be visible when you set it first time to a numeric value. If the property 'visible' is set 'off', it will keep being invisible.
More Answers (0)
See Also
Categories
Find more on Annotations in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!