WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

pushbotton, Legende für alle Kurven anzeigen

 

Thomas1979

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.08.2008, 13:37     Titel: pushbotton, Legende für alle Kurven anzeigen
  Antworten mit Zitat      
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!

Gruß


rosi25
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 14.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.01.2009, 12:31     Titel:
  Antworten mit Zitat      
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!
Private Nachricht senden Benutzer-Profile anzeigen
 
Schrank
Forum-Century

Forum-Century


Beiträge: 203
Anmeldedatum: 10.07.08
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 31.01.2009, 07:16     Titel:
  Antworten mit Zitat      
Hallo rosi,
ohne den Code jetzt ausprobiert zu haben, das geht doch mit
Code:
legend([plothandle1, plothandle2, ...], ['string1', 'string2'...])
, oder?
Gruß Schrank
Private Nachricht senden Benutzer-Profile anzeigen
 
rosi25
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 14.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.01.2009, 14:55     Titel:
  Antworten mit Zitat      
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;
Private Nachricht senden Benutzer-Profile anzeigen
 
Schrank
Forum-Century

Forum-Century


Beiträge: 203
Anmeldedatum: 10.07.08
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 31.01.2009, 20:02     Titel:
  Antworten mit Zitat      
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;
if isempty(data)
    data{1}=get(handles.edit1,'String');
else
    data{end+1}=get(handles.edit1,'String');
end

function edit1_CreateFcn(hObject, eventdata, handles)
if ispc && 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);
if exist('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);
hold all;


Gruß Schrank
Private Nachricht senden Benutzer-Profile anzeigen
 
rosi25
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 14.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.02.2009, 12:52     Titel:
  Antworten mit Zitat      
Hallo Schrank

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);

Error in ==> legend at 276
    [h,msg] = make_legend(ha,varargin(arg:end));

Error in ==> arbeit>pushbutton1_Callback at 102
legend(handles.SemPlot, data);

Error in ==> gui_mainfcn at 96
        feval(varargin{:});

Error in ==> neu at 42
    gui_mainfcn(gui_State, varargin{:});

??? Error while evaluating uicontrol Callback

 


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
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.