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

Mehrere Graphen in ein Plot mit checkboxen steuern

 

t.b.
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 02.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2011, 09:16     Titel: Mehrere Graphen in ein Plot mit checkboxen steuern
  Antworten mit Zitat      
HAllo zusammen,

ich möchte gerne 3 Plots in einem Graphen auf der GUI anzeigen. Die Sichtbarkeit der einzelnen GRaphen soll durch 3 Checkboxen steuerbar sein also dass ich gezielt welche ein und ausblenden kann ohne dass die anderen eingeblendeten dann verschwinden.

Ich habe hier schon ein bisschen was ausprobiert. Mit einer Checkbox und einem Plot klappt das wunderbar, aber wenn ich danneinen zweiten hinzuüge geht gar nix mehr. Ich schreibe mal was ich bisher habe:

Ich habe einen Callback, in dem Ich alle meine plots ausführe und in handles speicher.

Code:
function createplot_Callback(hObject, eventdata, handles)
% hObject    handle to createplot (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

handles.n1=0:1:100;
handles.x1=sin(handles.n1);
handles.x2=cos(handles.n1);
handles.h1=plot(handles.g1,handles.n1,handles.x1);
%%handles.h2=plot(handles.g1,handles.n1,handles.x2);

set(handles.h1,'Visible','off');
%%set(handles.h2,'Visible','off');

guidata(hObject, handles);


Die Checkbox 1 hat folgenden Code:

Code:
function checkbox1_Callback(hObject, eventdata, handles)
% hObject    handle to checkbox1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

if get(hObject,'Value') == 1
    set(handles.h1,'Visible','on');
elseif get(hObject,'Value')==0
    set(handles.h1,'Visible','off');
end

guidata(hObject, handles);


Das funktioniert noch. Wenn ich jetzt aber das auskommentierte im Callback createplot einfüge, also

Code:
handles.h2=plot(handles.g1,handles.n1,handles.x2);
set(handles.h2,'Visible','off');


Dann gehts nicht mehr. Ich gluaube irgendwieda es daran liegt, dass ich zwei plots in dem Graphen g1plotten möche. Ich weiß aber nicht genau.

Vielleicht könnt ihrmir helfen.???

Gruß
Private Nachricht senden Benutzer-Profile anzeigen


t.b.
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 02.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2011, 09:37     Titel: Zusatz
  Antworten mit Zitat      
Das Problem ist einfach, dass mit dem erst5en Code, die erste Checkbox funktioniert. MItdem zweiten (also dem auskommentierten) funktioniert nur die zweite Checkbox, also:
Code:
function checkbox2_Callback(hObject, eventdata, handles)
% hObject    handle to checkbox2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of checkbox2

if get(hObject,'Value') == 1
    set(handles.h2,'Visible','on');
elseif get(hObject,'Value')==0
    set(handles.h2,'Visible','off');
end

guidata(hObject, handles);


Du gehen also nicht zusammen und ich habe keine Ahnung woran das liegt
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2011, 09:43     Titel:
  Antworten mit Zitat      
öh, reicht da vielleicht ein "hold on" zwischen die beiden plot befehle im createPlot_Callback?
 
t.b.
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 02.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2011, 09:58     Titel: Hilt nh
  Antworten mit Zitat      
Das bringt nix. geht trotzdem nicht
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2011, 10:11     Titel:
  Antworten mit Zitat      
Also bei mir geht das.
Ist handles.g1 auch eine Axes?

Habe mal ein Beispiel angehangen:

plottest.rar
 Beschreibung:

Download
 Dateiname:  plottest.rar
 Dateigröße:  6.04 KB
 Heruntergeladen:  369 mal
 
t.b.
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 02.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2011, 10:17     Titel: geht doch
  Antworten mit Zitat      
ich habe erst nur hold on genommen, damit ging es nicht.

Aber mit hold(handles.axes) geht es

Danke dir.



Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
t.b.
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 02.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2011, 10:32     Titel: Doch noch ein Problem
  Antworten mit Zitat      
Es funktioniert doch noch nicht so ganz.

Mit zwei Checkboxen ist alles gut, aber mache ich eine dritte dazu gehts wieder nicht, es geht dann nur die dritte.

Habe denn Code einfach so erweitert:

Code:
handles.h1=plot(handles.g1,handles.n1,handles.x1,'b');
set(handles.h1,'Visible','off');
hold (handles.g1);

handles.h2=plot(handles.g1,handles.n1,handles.x2,'g');
set(handles.h2,'Visible','off');
hold (handles.g1);

handles.h3=plot(handles.g1,handles.n1,handles.x3,'r');
set(handles.h3,'Visible','off');


Weiß nicht warum das schon wieder nicht gehen will. Habe doch hold(handles.axes) im Code drinnen.

VIelleicht kannst du mir da nochmal helfen???

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2011, 10:37     Titel:
  Antworten mit Zitat      
mit dem 2. hold gibst du die axes wieder frei -> nur einmal hold benutzen.
 
t.b.
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 60
Anmeldedatum: 02.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2011, 10:43     Titel:
  Antworten mit Zitat      
Okay, alles klar.

Geht alles Smile

Vielen Dank.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 28.07.2011, 10:46     Titel:
  Antworten mit Zitat      
Hallo
weil du HOLD zwei mal hintereinander aufrufst, da du aber nicht explizit sagst, dass HOLD Einfüge-Modus nutzt, schaltet es automatisch zw. Ersetze und /Einfüge-Modus um. Also entweder hold nur einmal nutzen.
Du kannst aber auch direkt NextPlot-Property von deinen Axes nutzen.

Code:

handles.h1=plot(handles.g1,handles.n1,handles.x1,'b');
set(handles.h1,'Visible','off');
% Einfüge-Modus aktivieren
set(handles.g1,'NextPlot','add')

handles.h2=plot(handles.g1,handles.n1,handles.x2,'g');
set(handles.h2,'Visible','off');


handles.h3=plot(handles.g1,handles.n1,handles.x3,'r');
set(handles.h3,'Visible','off');

% in ersetze-Modus wieder schalten
set(handles.g1,'NextPlot','replace')
 
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 - 2025 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.