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

Legendeneinträge je nach Plot kontrollieren / ausblenden

 

teutopixx
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 77
Anmeldedatum: 09.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2013, 16:15     Titel: Legendeneinträge je nach Plot kontrollieren / ausblenden
  Antworten mit Zitat      
Hallo zusammen,

momentag gibt sich bei einem GUI folgende Problematik:
Ich habe eine axes, in der ich zwei Funktionen plotte... z. b. sin und cos.
Die sin-Funktion wird z. B. blau dargestellt, die cos-Funktion grün.

Um nun über ein Radiobutton die eine oder andere Funktion in der Axes ausblenden zu können, kontrolliere ich die Plots über linehandles:

Code:

lineHandles= ...
[plot(handles.axes1,  t, sin,'Visible','on', 'DisplayName','sin'),...
plot(handles.axes1,  t, cos,'Visible','on', 'DisplayName','cos')];
 


Nun kann ich über einen Radiobutton also schön die Sichtbarkeit in meiner Axes schalten...
Was nun aber stört: Es werden, auch wenn z. B. die cos-Funktion nicht sichbar ist, dennoch beide Funktionen in der Legende angezeigt.

Über den callback meines Radiobuttons habe ich es folgendermaßen versucht:
Code:

set(handles.lineHandles(2),'Visible','off');
set(get(get(handles.lineHandles(2),'Annotation'),'LegendInformation'),'IconDisplayStyle','off');
 


So direkt funktioniert das aber irgendwie nicht.
Es geht erst, in dem ich die Legende einmal ausblende und wieder einblende:

Code:

legend(handles.axes1,'off');
legend(handles.axes1,'show')
 


Gibt es da nicht einen einfacheren Weg!?
Wenn ich nämlich nun einen Plot mit mehreren (z. B. 10 Stück) Funktionen habe, und ich oben genannten Weg nehme, ist das ganz schön viel fehlerträchtige Programmiererei.
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 01.08.2013, 09:42     Titel: Re: Legendeneinträge je nach Plot kontrollieren / ausblende
  Antworten mit Zitat      
Hallo teutopixx,

Radio-Buttons sind gedacht für sich gegenseitig ausschließende Bedingungen. Deine Aufgabe klingt eher nach Checkboxes. Dann können deren Callback-Funktionen alle auf den selben Calback zugreifen:
Code:
function checkCallBack(ObjectH, EventData)
handles = guidata(ObjectH);
value = get(handles.CheckBoxH(:), 'Value');
...

Dann hast Du die Werte aller Checkboxes und das automatische Setzen sollte unabhängig von der Anzahl der Kurven mit ein und dem selben Code laufen.

Ich vermute am aus- und wieder Einschalten der Legend lässt sich nichts ändern. Das sollte dann aber auch nicht mehr so sehr stören.

Ich hatte im FileExchange ein Tool gefunden, in dem man direkt in der Legend auf die Labels klicken konnte, um einzelne Kurven auszublenden. Suche dort mal unter dem Stichpunkt "Legend" oder "dynamic legend".

Gruß, Jan
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.