delete line plot via handles not working
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Jason
am 28 Nov. 2014
Kommentiert: Daniel Melendrez
am 6 Dez. 2019
Hi, I am plotting a histogram and want to draw a line that represents the mode:
bar(x,counts,'b','EdgeColor','b');
xm=mode(IM(:));
Now as I will want to replot this linen with a slider callback later, and wont want to have to replot the barchart, I thought adding the line plot here using handles, would then allow me to delete it later and replot it (whilst keeping the barchart still present)
So to plot the line using handles (on my axes component)
AxesH = axes(handles.axes5);
LineH=plot([xm xm],[0 max(counts)],'r', 'LineWidth',1); %draw line representing the mode (most frequent)
set(AxesH, 'UserData', LineH); %save so can recall or delete later
guidata(hObject, handles);
Then under a slider callback, firstly I want to delete the current line:
OldLineH = get(handles.axes5, 'UserData');
delete(OldLineH);
and then plot the new one based on the slider value
LineH=plot([x(p) x(p)],[0 max(counts)],'r', 'LineWidth',1);
guidata(hObject, handles);
drawnow;
hold on;
But its not deleting the first one, so I get an accumulation of lines.
2 Kommentare
Akzeptierte Antwort
Orion
am 28 Nov. 2014
Bearbeitet: Orion
am 28 Nov. 2014
Hi,
I think this should work
axes(handles.axes5);
if ~isfield(handles,'LineH')
% create the field the first time
handles.LineH = plot([x(p) x(p)],[0 max(counts)],'r', 'LineWidth',1);
else
% update the already existing plot
set(handles.LineH,'XData',[x(p) x(p)],'YData',[0 max(counts)]);
end
guidata(hObject, handles);
drawnow;
0 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Numeric Types finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!