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

Matlab legend

 

pg
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 16.01.13
Wohnort: Kleinmachnow (b.Berlin)
Version: ---
     Beitrag Verfasst am: 16.01.2013, 23:08     Titel: Matlab legend
  Antworten mit Zitat      
Hallo bin neu und hab mir hier auch Hilfe geholt. Jetzt aber mal eine Frage zu der lästigen hold on/off/all Funktion:
Ich muss/will in einer for-Schleife plotten (plot-Liste variabler Länge) und dazu die Legende ausgeben:

Code:
for i = ...
plot (..data(i) ...);
legend (...)
hold on;
end;


Geht nicht, weil die Ausgabetexte überschrieben werden. Also die Legende-Texte in ein cell-array.
Code:
for i = ...
plot (...);
leg(i) = dat.text;  % oder so
hold on;
end;
legend(leg);


Das geht mit den Kurvereigenschften aus plot(), aber nur mit einem ---> hold off VOR der for-Schleife (hab ich hier im Forum gelernt), sonst stimmen die Frabe/Linien-Stiel nicht, weil zufällig aus den Properties ausgewählt (wer hat bloß die legend() geschrieben ???).

ABER: mit hold off werden die Properties gelöscht und damit geht die calback-funktion, die an der Maus hängt, auch nicht mehr !!!

Meine callback-Funktion (Axes_ButtonDownFcn) ruft zuerst --->
rect= getrect(handles.Axes);
auf und wartet, bis die Maus das Rechteck im Diagramm (Fenster) hat, also der linke Button losgelassen ist. D.h. nach einem Plot kann ich mit der Maus gar nichts mehr machen, nur weil ich die Legende auch haben will (sonst braucht man das hold off nämlich nicht und mit der Maus kann man im Plot prima arbeiten).
ALSO:
nach dem plotten hilft nur --->
set (handles.figure1,'WindowButtonDownFcn' ,{@Axes_ButtonDownFcn handles});

Meine Frage: Wie kann man das geschickter umgehen (ich will nicht die zoom-Funktion mit dem Fenster ersetzen) oder ist das wirklich nur so "getrickst" möglich und wo steht das eigentlich ???

MatLab ist zwar prima (GUI mit Matlab erstellt, wunderbar), aber das ist eine ganz miese funktion (legend/hold).
Wer hat einen guten Rat ???


Edit by Martin: Bitte doe Code-Formatierung verwenden. Danke!
Private Nachricht senden Benutzer-Profile anzeigen


Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.01.2013, 07:34     Titel:
  Antworten mit Zitat      
Hallo,

1) Dein Thema ist sicher nicht Off Topic. Ich denke bei Grafiken und Plots hätte es gut gepasst.

2) Poste doch ein Minimalbeispiel welches zeigt was nicht richtig funktioniert.

Folgendes funktioniert bei mir:
Code:

color = {'r','b+','k','mo','c'};
figure('name','legend');hold on;
for k = 1:5
    plot(1:10,sqrt((1:10).^k),color{k});
end
legend(color)
 


viele Grüße
Thomas
Private Nachricht senden Benutzer-Profile anzeigen
Verschoben: 17.01.2013, 08:19 Uhr von Martin
Von Off Topic nach Grafiken und Plots
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 17.01.2013, 12:50     Titel: Re: Matlab legend
  Antworten mit Zitat      
Hallo pg,

Statt per HOLD das aktuelle AXES-Objekt zu ändern, kannst Du das auch explizit machen:
Code:
AxesH = axes('NextPlot', 'add')

Nun werden beim Zeichnen neuer Objekte die existierenden nicht mehr gelöscht.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
pg
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 16.01.13
Wohnort: Kleinmachnow (b.Berlin)
Version: ---
     Beitrag Verfasst am: 17.01.2013, 23:13     Titel:
  Antworten mit Zitat      
Hallo Jan, Thomas,

danke für Eure Antworten !

Thomas ich denke die Code-Fragmente sind klar genug.

Jan Dein
--> AxesH = axes('NextPlot', 'add') gefällt mir, werde es also ausprobieren und zwar ohne hold off vor der Schleife.

Wenns funktioniert, also die Maus-Funktion (hold off ist eindeutig der Störenfried!) nicht stirbt, melde ich mich. Aber Geduld, ich habe z.Zt. wenig Zeit dafür.

Gruß pg
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.