Verfasst am: 29.08.2008, 13:37
Titel: pushbotton, Legende für alle Kurven anzeigen
Hallo,
ich habe ein GUI erstellt, bei dem ich durch Drücken des pushbottons eine neue Kurve hinzufügen kann. Nun möchte ich auch die legend aller plots darstellen. Mit u.a. Code erscheint aber nur die legend für den aktuellen plot. Die legend des vorhergehenden plot verschwindet.
function pushbutton1_Callback(hObject, eventdata, handles)
A = uigetfile('*.txt','Datei','H:\Matlab\GUI\');
B=dlmread(A,'\t');
axes(handles.axes1);
C=plot(B(:,3));
hold all;
legend(C);
Wie kann ich das lösen, dass mir die legend alle plots beschreibt?
Vielen Dank für Eure Hilfe!
Ich habe auch ungefähr das gleiche Problem. Ich plotte einzelne Dateien hintereinander. Ich möchte die Legend jeder Kurve manuell in einem Editor eintippen. Dabei erscheint nur der aktueller Wert (String) der Legend.
Es wärre schön wenn ihr eine Idee dazu habt.
Vielen Dank im Vorraus!
Danke erstmal für deine Antwort.
Ich habe leider nicht verstanden was du damit gemeint hast.
Hier ist mein Code(damit ihr versteht worum es genau geht).
[/code]
function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit1 as text
% str2double(get(hObject,'String')) returns contents of edit1 as a double
global data;
data=get(handles.edit1,'String');
% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global data;
[FileName,PathName] = uigetfile('*.lvm','Select the lvm-file');
Folder=strcat(PathName, FileName);
Datei=load(Folder);
A=Datei;
axes(handles.axes1);
semilogy(A(:,1),A(:,2))
legend(data);
hold all;
Hallo rosi,
also meine Lösung ist nicht sonderlich schön, aber sie müsste funktionieren. Ansonsten solltest du dich mal mit "handles" auseinandersetzen, das ist wesentlich schönes als mit globalen variablen zu arbeiten:
Code:
function edit1_Callback(hObject, eventdata, handles) global data;
ifisempty(data)
data{1}=get(handles.edit1,'String');
else
data{end+1}=get(handles.edit1,'String');
end
function edit1_CreateFcn(hObject, eventdata, handles) ifispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');
end
function pushbutton1_Callback(hObject, eventdata, handles) global data;
[FileName,PathName] = uigetfile('*.lvm','Select the lvm-file');
Folder=strcat(PathName, FileName);
Datei=load(Folder);
A=Datei;
axes(handles.axes1);
ifexist('handles.test','var')
handles.SemPlot(end+1) = semilogy(A(:,1),A(:,2));
else
handles.SemPlot = semilogy(A(:,1),A(:,2));
end legend(handles.SemPlot, data);
holdall;
Danke für deine Antwort.
Sorry, dass ich wieder fragen muss, da ich noch Matlab-Anfängerin bin.
Ich habe es ausprobiert, sowie du es geschrieben hast. Es klappt nicht ganz.
Ich habe folgende Fehlermeldungen:
Code:
??? Error using ==> legend>process_inputs at 552 Cell array argument must be a cell array of strings.
Error in ==> legend>make_legend at 319 [orient,location,position,children,listen,strings,propargs] = process_inputs(ha,argin);
Die Legend erscheint nicht.
Es wäre nett, wenn du mir erklären würdest, wie es genau funktioniert mit 'handles. '(handles.test, handles.SemPlot).
Gruß
rosi
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.