Clear a line drawn in plot.

107 vues (au cours des 30 derniers jours)
Jonasz
Jonasz le 16 Sep 2013
Hello I would like to clear a line that I draw in my graph but I want it to be clean only when I run my function.
When I press button in Matlab GUI I want to draw a line but when I pressed it second time I want to clear that line and draw other. How to simply do this.

Réponse acceptée

David Sanchez
David Sanchez le 16 Sep 2013
Implement this in the pushbutton:
children = get(gca, 'children');
delete(children(1));
The first line grabs the last additions to the figure, the second line deletes from the plot the last element added to the figure.
  3 commentaires
Jan
Jan le 16 Sep 2013
@Joansz: We cannot guess what you are doing exactly. Because the question is vague only, we can suggest some methods, but not a running piece of code. When you show us the relevant part of your code, more exactly answers are possible.
Jonasz
Jonasz le 16 Sep 2013
function my_list_Callback(hObject, eventdata, handles)
% hObject handle to my_list (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns my_list contents as cell array
% contents{get(hObject,'Value')} returns selected item from my_list
id=get(hObject,'Value');
list=get(hObject,'String');
item_selected=str2double(list{id});
di=get(handles.text_dir,'String');
[xmin,xmax,ymin,ymax,hm]=heatMap(item_selected,di);
%%Plot a line
if exist('dl', 'var')
delete(dl);
end
averSpec=load(fullfile('C:\Users\Jonasz\Documents\Studia\Biotechnologia\_Projekt\Workspace','averSpectrum.mat'));
averSpec=averSpec.averSpectrum;
axes(handles.axes_Spec);
hold on;
dl=plot([item_selected item_selected],[min(averSpec) max(averSpec)],'Color','red','LineWidth',1);
%%Plot a heatmap
cl=ymin:ymax;
rl=xmin:xmax;
hit=HeatMap(hm,'RowLabels',rl,'ColumnLabels',cl,'ColorMap',redbluecmap,'Symmetric',false);
guidata(hObject,handles);
This is my code. This is the function which is running when I press some value in my list. There are many values e.g. 1000 values. I want to draw each time this value ( line exactly in this value) on my plot but I want to refresh this line after I change the value in 'mylist'.

Connectez-vous pour commenter.

Plus de réponses (1)

Simon
Simon le 16 Sep 2013
Hi!
Each time you plot something with the "h=plot" command, it gives you as return value the handle "h" of that plot. Then you may use
delete(h)
You just need to remember this handle (store it somewhere ...)
  4 commentaires
Jonasz
Jonasz le 16 Sep 2013
It's okey but there is some problem.The variable h is only visible inside the function. How the function will know if the h exist or not?
Simon
Simon le 17 Sep 2013
So, in your code above you have everything you need. Storing a variable for future use is done using "guidata". See http://www.mathworks.com/help/matlab/ref/guidata.html?searchHighlight=guidata

Connectez-vous pour commenter.

Catégories

En savoir plus sur 2-D and 3-D Plots dans Help Center et File Exchange

Tags

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by