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 + gezielt einzelne anzeigen

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.02.2009, 13:23     Titel: Mehrere Graphen in ein Plot + gezielt einzelne anzeigen
  Antworten mit Zitat      
Hallo,
ich möchte gerne 5 Graphen in einem plot anzeigen. dabei möchte ich 5 button haben mit dem ich jeden einzelnen graph gezielt ein und ausblenden kann ohne dass die anderen eingeblendeten dann verschwinden. sie sollen quasi übereinander gelegt werden.

als zweites wollte ich jeweils einem graphen eine farbe zuordnen.

ist dies mit matlab möglich? könnt ihr mir weiterhelfen?
habe bis jetzt nur hold gefunden um weitere hinzuzufügen was aber mein problem nicht beseitigt.

Danke


Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.02.2009, 13:41     Titel:
  Antworten mit Zitat      
Du kannst Dir ein GUI basteln, z.B. wie hier: http://www.mathworks.com/access/hel.....ating_guis/f4-998349.html
In die
Code:
plottest Du alle Deine Kurven (mit
Code:
), speicherst Dir aber zu jeder Kurve den handle
Code:
usw und setzt dann in den callbacks der Knöpfe die entsprechenden Kurven mittels der handles sichtbar bzw. unsichtbar
Code:
set(h1,'Visible','on')


Reicht das als Ausgangspunkt?
 
derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 10.02.2009, 13:44     Titel:
  Antworten mit Zitat      
Hi,

Das geht auf jedenfall mit Matlab, hier die Vorgehensweise, die ich nutzen würde:

1. GUI Programmieren, ein Graphikfenster, 5 Buttons. Die Buttons ändern einen binären 1 mal 5 Vektor und rufen eine Funktion refresh auf.

2. Funktion refresh nutzt den Vektor und zeichnet nur die Graphen die Aktiviert wurden (z.B. eine 1 in dem Vektor)

3. Fertig die Grafiken werden mit festen Farben gezeichnet.

Viele Spaß beim Umsetzten,

der Oli
Private Nachricht senden Benutzer-Profile anzeigen
 
GastVerfasser

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.02.2009, 13:44     Titel:
  Antworten mit Zitat      
Ja danke. reicht erstmal als anhaltspunkt. werd mich jetzt damit befassen hehe
 
derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 10.02.2009, 13:49     Titel:
  Antworten mit Zitat      
Stimmt, ist der bessere Ansatz, sollte leichter zu programmieren sein.

Grüße,

der Oli
Private Nachricht senden Benutzer-Profile anzeigen
 
GastVerfasser

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.02.2009, 13:54     Titel:
  Antworten mit Zitat      
Also die Refresh methode mit dem vektor interessiert mich näher, habe aber keine ahung wie ich das mach soll von der programmierung, vllt hast du noch ein paar anhaltspunkte bzw. die wichtigsten schritte als programmierung.
gruß
 
josekamara
Forum-Meister

Forum-Meister


Beiträge: 529
Anmeldedatum: 26.04.08
Wohnort: München
Version: ---
     Beitrag Verfasst am: 10.02.2009, 13:55     Titel:
  Antworten mit Zitat      
verweis auf die befehle:
Plot: axes(...)
Button: uicontrol(....,'Callback','aufrufen',.....,'Style','pushbutton');
_________________

Simulation
Private Nachricht senden Benutzer-Profile anzeigen
 
Tox
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 54
Anmeldedatum: 26.08.08
Wohnort: ---
Version: R2010b
     Beitrag Verfasst am: 04.11.2010, 11:59     Titel:
  Antworten mit Zitat      
Hallo ich verfolge das gleiche Ziel wie der Gast.
Einzelne Graphen sollen ein und ausgeblendet werden.
Am liebsten würde ich einfach einzelnen Graphen unsichtbar machen.

Problem ist folgendes.
Ich habe ein Checkbox folgendermaßen belegt
Code:

% --- Executes on button press in checkbox2.
function checkbox2_Callback(hObject, eventdata, handles)

% Matlab knows where to plot the data
axes(handles.axes1)

if get(hObject,'Value')==1
    % Werte aus dem Workspace einlesen
    time  = evalin('base','time');
    ytest = evalin('base','ytest');  
    % plots the x and y data
    l1 = plot(time,ytest);

elseif get(hObject,'Value')==0
         set(handles.l1,'Visible','off')
end
guidata(hObject, handles); % updates the handles


Das Plotten klappt hervorrragend, wenn das Häckchen entfernt wird kommt allerdings folgender Fehler:

Code:
??? Reference to non-existent field 'l1'.

Error in ==> guiauswertung>checkbox2_Callback at 171
         set(handles.l1,'Visible','off')


Offensichtlich kennt Matlab l1 nicht mehr. Wie kann man trozdem darauf zugreifen?
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 04.11.2010, 12:05     Titel:
  Antworten mit Zitat      
Hallo

wenn du, die Variable in handles haben willst, dann musst es dort aber erst abspeichern

ändere folgende Zeile:
Code:

handles.l1 = plot(time,ytest);
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Tox
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 54
Anmeldedatum: 26.08.08
Wohnort: ---
Version: R2010b
     Beitrag Verfasst am: 04.11.2010, 14:00     Titel:
  Antworten mit Zitat      
Das wars. Danke denny.

Habe die Sache jetzt folgendermaßen gelößt:
Die Gui besteht aus einem Axes und mehreren Checkboxen. Mit jeder Checkbox kann man, ähnlich den Plot Tools, eine Kurve an oder ausschalten.

1. Zunächst werden alle Variablen aus dem Workspace geladen
Code:
x    = evalin('base','x');
y    = evalin('base','y');
...


2. Dann werden alle Kurven geplottet
Code:
handles.l1 = line(x,y ,'color',[230 6 58]/256);
handles.l2 = .....
 


3. Kurven die zu Beginn nicht sichtbar sein sollen, werden per default unsichtbar gesetzt.
Code:
set(handles.l1,'Visible','off');
...


4. In den callback functions für die Checkboxen wird folgender Code eingesetzt, welcher bei einem gesetzten Häckchen die Kurve sichtbar macht und ohne Häckchen diese entfernt.
Code:
if get(hObject,'Value')==1
    set(handles.l1,'Visible','on');
elseif get(hObject,'Value')==0
    set(handles.l1,'Visible','off');
end
guidata(hObject, handles);
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.