フィルターのクリア

Clear a line drawn in plot.

99 ビュー (過去 30 日間)
Jonasz
Jonasz 2013 年 9 月 16 日
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.

採用された回答

David Sanchez
David Sanchez 2013 年 9 月 16 日
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 件のコメント
Jan
Jan 2013 年 9 月 16 日
@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 2013 年 9 月 16 日
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'.

サインインしてコメントする。

その他の回答 (1 件)

Simon
Simon 2013 年 9 月 16 日
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 件のコメント
Jonasz
Jonasz 2013 年 9 月 16 日
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 2013 年 9 月 17 日
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

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLine Plots についてさらに検索

タグ

製品

Community Treasure Hunt

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

Start Hunting!

Translated by