How to remove a plot (if it exists) before replotting? Matlab GUI ButtonDownFcn
1 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Michael Haderlein
2014-9-17
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 个评论
Michael Haderlein
2014-9-17
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.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Data Exploration 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!