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

Flexible Legende

 

koxx

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.03.2013, 15:17     Titel: Flexible Legende
  Antworten mit Zitat      
Hallo,
ich bin es nochmal. Konnte mein Problem mit fnplt lösen, allerdings hänge ich jetzt bei der Lengende. Kurz zu dem was ich mache und woran ich scheitere:

ich plotte mehrere Messungen in eine Figure, jeweils die Messdaten mit einem Plot Befehl und einen Spline mittels fnplt. Damit nicht jeweils zwei Einträge zu jeder Messung erscheinen, erstelle ich für jeden fnplt ein handle und schreibe dieser in einen vector. Am Ende lasse ich dann in der Legende nur die Einträge aus dem Vector anzeigen. Funktioniert auch wunderbar. Habe allerdings ein Problem mit der Beschriftung. Diese soll variabel sein, der string wird in der Loop aus den Messdaten bzw Funktionsparametern ermittelt.

Wie kann ich jetzt die einzelnen Strings so übermitteln, dass er mir die Legende richtig anzeigt?

Hier mal mein Code:

Code:

for k = 1:L
% Erzeugung des Strings
        formatSpec = 'B_1 = %g muT';
        str = sprintf(formatSpec,B1vec(k));
       
% smoothing spline
        y2 = Ya2(:,i,k);
        spline1 = spaps(x2,y2,5e-07);
% spline plotten
        fnplt(spline1,'-',2);
% handle für fnplt erzeugen und Eigenschaften ändern
        h = findall(gca,'Type','line','-and','DisplayName','');
        set(h,'Color',cc(k,:),'DisplayName', str)
% handle-vector erzeugen (FUNKTIONIERT !)
        hvec(k) = h;
% Cell-Array mit Namen erzeugen (funktioniert auch)
        hname{k} = {str};
% Messdaten plotten     plot(x,Ya(:,i,k),'color',cc(k,Smile,'Marker','o','LineStyle','none','DisplayName',str)
end
legend(hvec,{'test','test','test','test','test','test'})
 


Der hvec funktioniert wie gesagt, allerdings scheiter ich gerade daran die Namen in die richtige Form zu bringen. In der Schleife schreib ich die Namen in ein cell array, aber damit kann legend() halt nix anfangen. Es muss doch eine schöne, einfache und schnelle Lösung geben die Daten in die benötigte Form zu konvertieren, oder ?!

Achja, die Länge von hvec und die Namen sollen natürlich variabel bleiben!

Vielen Dank schonmal


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 27.03.2013, 23:00     Titel: Re: Flexible Legende
  Antworten mit Zitat      
Hallo koxx,

Ich habe das eigentliche Problem nicht verstanden, aber auch kaum Zeit. Darum nur ein kurzer Kommentar:
Zitat:
hname{k} = {str};

Das ist ungewöhnlich, da hier ein {1x1} Cell in ein Cell geschrieben wird. Ein Cell-String klingt im Zusammenhand mit LEGEND vertrauter:
Code:
hname{k} = str;
% Equivalent, aber etwas langsamer:
hname(k) = {str};  % Runde Klammern links vom =
 

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 - 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.