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

legend anpassen

 

torsten23__

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.07.2010, 10:08     Titel: legend anpassen
  Antworten mit Zitat      
Hallo,

ich würde gerne eine Legende für mehrere Graphen verwenden


also aktuelle plotte ich die Graphik wie folgt

colorVec = ['b';'r';'c';'m';'g';'b';'k';'y';'b';'r';'c';'r';'c';'m';'g';'y';'b';'r';'c';'r'];

for k=6:25
for i=1:5
hold on
nname=['pr04/proj_',int2str(k),'_',int2str(i),'.mat']
vname=['v',int2str(k)];
vname=load(nname);
plot(vname.zzz(2:end,3),colorVec(k))
end
end

dabei bekommen die 5 Graphiken aus jeder "i"-Schleife immer die gleiche Farbe

in der Legend hätte aber nun jede einzelene Kurve einen Eintrag...

ich hätte aber gerne nur für jede Farbe bzw. für jedes "k" einen Eintrag in der Legende...

Torsten

P.S. außerdem denk ich dass meine Farbauswahl noch etwas optimierbar ist... gibt es da irgendwas dass er autoamtisch was "schönes sucht"? damit man die Kurven besser unterscheiden kann?


_Napoleon

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.07.2010, 11:02     Titel: a
  Antworten mit Zitat      
Hallo,

es ist normal dass du für alle i die gleiche farbe bekommst.
weil du ja in der inneren schleife 5 mal den gleichen wert aufrufst colorVec(k).

das mit automatisch farben aussuchen, ich würde zum beispiel HSV benutzen.
Code:

t=0:0.1:10;
colorr=hsv(7);
hold all;

for i=1:7
    x(i,:)=i*t;
    plot(t,x(i,:),'Color',colorr(i,:))
end
 


ansonsten ich versteh deine frage nicht ganz.
kann es sein dass du 100 graphen hast und nicht 20??

sollen dann jede 5 gleiche farbe bekommen?? das hast du ja schon oder?
ist das problem jetzt mit farben oder legend.?

also ich bin durcheinander Confused

gruss
 
Torsten___

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.07.2010, 12:14     Titel:
  Antworten mit Zitat      
hey, ja das mitn hsv klappt ganz gut

ja das ich für alle i die gleiche Farbe bekomme ist auch beabsichtigt....


nun möchte ich zu jeden 5er Pack, bzw. zu jeden k einen legend eintrag erstellen...

sodass ich dann 20 Einträge habe und keine 100
 
Maddy
Ehrenmitglied

Ehrenmitglied



Beiträge: 494
Anmeldedatum: 02.10.08
Wohnort: Greifswald
Version: ---
     Beitrag Verfasst am: 22.07.2010, 12:34     Titel:
  Antworten mit Zitat      
Der Abschnitt "Controlling Legends" in der Doku behandelt die Gruppierung von Graphen zur Reduktion von Legenden-Einträgen.
_________________

>> why
The computer did it.
Private Nachricht senden Benutzer-Profile anzeigen
 
Torsten23__

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.07.2010, 14:42     Titel:
  Antworten mit Zitat      
hm, vielen Dank für den Hinweis, darauf bin ich noch nicht gestoßen,

allerdings bin ich noch nicht ganz soweit

im Beispiel findet man dort jenes

hSLines = plot(t,sin(m),'Color','b');hold on
hCLines = plot(t,cos(m),'Color','g');
hSGroup = hggroup;
hCGroup = hggroup;
set(hSLines,'Parent',hSGroup)

und es wird davon ausgegangen dass jede Zeile des Bildes gleich groß / lang ist...

bei mir sind diese allerdings unterschiedliche...

denke dass ich da auch mit dynamischen Variablen arbeiten müsste?

for i=1:10
A{i} = 1:i;
end

AA = hggroup?

so könnte ich ein i 5-er Set zusammenfassen...

allerdings für meine ks müsste ich die Celle nochmal schachteln?

Torsten
 
Torsten23___

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.07.2010, 16:57     Titel:
  Antworten mit Zitat      
ich denke fast, dass ich sowas wie

http://www.gomatlab.de/mehrere-grap.....usammenfassen-t11638.html

brauche.... allerdings eine Zellenstruktur mehr? den ich hab meine Werte ja nicht in einer Tabelle? oder sollte man sich so eine erstellen?
 
LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2010, 07:55     Titel:
  Antworten mit Zitat      
Hallo,

die Linien müssen müssen nicht gleich lang sein.
Der Befehl plot gibt ein handle (eine Zahl) auf die Linie zurück.
Die ganzen Handles kannst Du in einem Vektor speichern.

Code:

h = zeros(2,1);
h(1) = plot(rand(10,1),'b');
hold on
plot(rand(5,1),'b');
h(2) = plot(rand(20,1),'g');
plot(rand(5,1),'g');
legend(h,'a','b')
 


Viele Grüße,

LittleX
Private Nachricht senden Benutzer-Profile anzeigen
 
torsten23
Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 21.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.07.2010, 09:34     Titel: legend, hggroup
  Antworten mit Zitat      
Hallo,

hab meinen code jetzt mal ein wenig umgeschrieben, aber so ganz macht er noch nicht was ich will... (bzgl. der Einträge in der Legende)

Code:

colorVec=hsv(20);

hold on

group1 = hggroup;
group2 = hggroup;
group3 = hggroup;
group4 = hggroup;
group5 = hggroup;
group6 = hggroup;
group7 = hggroup;
group8 = hggroup;
group9 = hggroup;
group10 = hggroup;

figure(1)
for k=6:25
     for i=1:5
        hold on
        nnname=['pr/pr_',int2str(k),'_',int2str(i),'.mat']
        nvname=['v',int2str(k)];
        nvname=load(nnname);

        nmfk{k}.matrixx{i}=nvname.zzz(1:end,3)';
        plot_handle{k-5,1} = plot(nmfk{k}.matrixx{1,i}(:,2:end),'Color',colorVec(k-5,:))  

 
       
     end  
        % plot_handle{k-5,1} = plot( nmfk{k}.matrixx{1,1}(:,2:end), nmfk{k}.matrixx{1,2}(:,2:end) ,'Color',colorVec(k-5,Smile );
     

 end

set(plot_handle{1,1},'Parent',group1);
    set(get(get(group1,'Annotation'),'LegendInformation'),...
    'IconDisplayStyle','on'); % Include this hggroup in the legend

set(plot_handle{2,1},'Parent',group2);
    set(get(get(group1,'Annotation'),'LegendInformation'),...
    'IconDisplayStyle','on'); % Include this hggroup in the legend

set(plot_handle{3,1},'Parent',group3);
    set(get(get(group1,'Annotation'),'LegendInformation'),...
    'IconDisplayStyle','on');

set(plot_handle{4,1},'Parent',group4);
    set(get(get(group1,'Annotation'),'LegendInformation'),...
    'IconDisplayStyle','on');

 


d.h. meine ganzen Informationen sind nun in der Zelle

nmfk (1x25)

in 1x(6:25) sind Strukturen die matrixx heißt, welche eine 1x5 Zelle ist,

d.h. nmfk{1.6}.matrixx sollte einen Eintrag in der Legende erhalten


>> nmfk{1,7}.matrixx
ans =
Columns 1 through 4
[1x138 single] [1x199 single] [1x146 single] [1x189 single]
Column 5
[1x184 single]
>> nmfk{1,8}.matrixx
ans =
Columns 1 through 4
[1x127 single] [1x123 single] [1x122 single] [1x138 single]
Column 5
[1x228 single]

jedes unterschiedliche nmfk{1,k} sollte nun einen eigenen Legendeeintrag bekommen... die 5 Kurven im nmfk{1,k} gehören zusammen
Private Nachricht senden Benutzer-Profile anzeigen
 
torsten23
Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 21.11.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.07.2010, 11:08     Titel:
  Antworten mit Zitat      
gelöst,

es lag an


set(plot_handle{4,1},'Parent',group4);
set(get(get(group1,'Annotation'),'LegendInformation'),...
'IconDisplayStyle','on');


da hatte ich in der 2. Zeile jeweils group 1 drinstehen
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: 25.07.2010, 11:15     Titel:
  Antworten mit Zitat      
Hallo Torsten,

eine andere Idee ist es LINE zu verwenden und LEGEND direkt mit den zu benutzenden Handles zu versorgen. Dazu muss man allerdings auch die Farben manuell wählen.
Code:

hList = zeros(1, 10);
color = hsv(10);
name = cell(1, 10);
for k = 1:10;
   hList(k) = line(1:10, rand(1, 10), 'Color', color(k, :));
   name{k} = sprintf('Line%.2d', k);
end
legend(hList, name);
 

Das ist etwas hölzerner als die HGGROUP Methode. Aber nett einfach und wenn man ein paar Hundert Diagramme zeichnen muss merkt man, dass es sogar schneller ist.

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.