delete line plot via handles not working

조회 수: 4 (최근 30일)
Jason
Jason 2014년 11월 28일
댓글: Daniel Melendrez 2019년 12월 6일
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
Jason
Jason 2014년 11월 28일
편집: Jason 2014년 11월 28일
Think I have sorted it. On the slider callback, I also need to add the line to the handles structure so it can delete it next time round:
AxesH = handles.axes5;
LineH=plot([x(p) x(p)],[0 max(counts)],'r', 'LineWidth',1);
set(AxesH, 'UserData', LineH);
guidata(hObject, handles);
drawnow;
Daniel Melendrez
Daniel Melendrez 2019년 12월 6일
Your solution saved my life!
Kudos
Daniel

댓글을 달려면 로그인하십시오.

채택된 답변

Orion
Orion 2014년 11월 28일
편집: Orion 2014년 11월 28일
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개)

카테고리

Help CenterFile Exchange에서 Creating, Deleting, and Querying Graphics Objects에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by