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

3 Probleme

 

m4n14ccc

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.09.2008, 17:23     Titel: 3 Probleme
  Antworten mit Zitat      
Hallo Leute

Sitz heut den ganzen Tag schon an 3 Problemen und komm nicht weiter.

1.) ich habe eine Funktion geschrieben die mehrere inputs und outputs hat.
Und anderem ist einer der Outputs auch ein Plot. Nun möchte ich das Titel abhängig von dem ist mit welcher Matrix ich die Funktion füttere. Z.b gebe ich als Input Matrix A ein, dann soll bei dem Plot der herauskommt bei Titel auch A stehen.

2.) in meiner Funktion gibt es ein normales Kurvendiagramm mit 2 Kurven. Daraufhin folgt ein Kuchendiagramm. Dabei haben die ersten zwei Tortenstücke unmittelbar was mit diesen 2 Kurven zu tun. Daher möchte ich das die ersten zwei Tortenstücke die gleiche Farbe wie die Kurven haben.

3.) Legende vom Kuchendiagramm zeigt falsche Farben an. Ich glaube das liegt daran dass z.b 5 Variablen in den pie chart einspeise aber nur die ersten 4 in die legende packen will. Matlab überspringt daher ein Tortenstück in der Legende. Kann man dem irgendwie sagen dass ich nur die ersten vier beschriftet haben will?


Wer echt super wenn mir jemand in dieser Sache weiterhelfen könnte.
Danke m


nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 12.09.2008, 18:27     Titel:
  Antworten mit Zitat      
Hi,

das Meiste davon lässt sich mit den sog. handles erschlagen, guck mal in die Hilfe und in die mittlerweile sehr zahlreichen Beispiele im Forum.

Datei erstelleGraphen.m
Code:
function erstelleGraphen(Matrix)
h=plot(Matrix);
legend({'1','2'});
title(inputname(1)); % zu 1)
figure;
p=pie(rand(1,4),{'1','2','3','4'});
set(p(1),'FaceColor',get(h(1),'Color')); % zu 2)
set(p(3),'FaceColor',get(h(2),'Color')); % zu 2)
legend([p(1) p(3) p(7)],{'1','2','XX'}); % zu 3)


als m-File speichern und z.B. so aufrufen:
Code:
Testmatrix=rand(10,2);
erstelleGraphen(Testmatrix)

Das p aus p=pie(..) enthält für jeden Teil des Charts 2 handles, einen für das Patch-Object, einen für den Text, immer abwechselnd.

Kommst Du damit zurecht?
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
m4n14ccc

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.09.2008, 19:01     Titel: 3 Probleme
  Antworten mit Zitat      
Super Danke

Punkt 1 hab ich schon lösen können.
Bei Punkt 2 bin ich nahe dran. Das Problem dabei ist dass ich nicht weiß wieviele Tortenstücke das Ding hat. Das ist offen und ist Teil des Ergebnisses der Funktion. Und ich glaub genau das macht Probleme in Zeile 6 von deinem Code. Gibts da irgendwas mit dem ich das offen lassen kann wieviele Tortenstücke am Ende geplottet werden?
 
m4n14ccc

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.09.2008, 19:04     Titel:
  Antworten mit Zitat      
Wenn ich das nämlich wüsste könnte ich Punkt drei auch lösen
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 12.09.2008, 19:08     Titel:
  Antworten mit Zitat      
Hi,

versteh ich jetzt nicht ganz. Du wolltest ja die ersten beiden Stück in ihrer Farbe ändern, dann hast Du ja mindestens zwei Stücke. Änder die wie oben und lass den Rest in Ruhe. Oder Du bestimmst mir
Code:
p=pie(rand(1,4),{'1','2','3','4'});
anzahl=numel(p)/2;
die Anzahl der Tortenstück nach dem Plotten, oder Du bestimmst sie vor dem Plotten anhand der Ausgabe Deiner Funktion, das wird ja auch irgendwie machbar sein. Dann könntest Du eine for-Schleife machen und jedes Tortenstück bearbeiten.

Am Besten gibst Du mal ein konkretes Beispiel.
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
m4n14ccc

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.09.2008, 19:15     Titel:
  Antworten mit Zitat      
Also ich hab das nun so eingeben

Code:

% 'l' ist offen bestimmt die Funktion
% Pod_lambda_Std ist ein Spaltenvektor
clear p
figure(5)                                                                                            
p=pie (Pod_lambda_Std(1:l,1), {'1','2','3','4'})
set(p(1),'FaceColor', [1 0 0])
set(p(2),'FaceColor', [0 1 0])
set(p(3),'FaceColor', [0 0 1])
set(p(4),'FaceColor', [0 1 0.5])
legend([p(1) p(2) p(3) p(4)],{'\lambda_1','\lambda_2','\lambda_3','\lambda_4'},'Location','EastOutside')

%Wenn zum bsp für l=5 herausbekomme
%Kommt diese Fehler meldung:
 

??? Error using ==> pie
Cell array of strings must be the same length as X.

Error in ==> Pod_Basis at 139
p=pie (Pod_lambda_Std(1:l,1), {'1','2','3','4'})

edit by steve: Bitte zukünftig die Codeumgebung benutzen!!!
 
m4n14ccc

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.09.2008, 19:31     Titel:
  Antworten mit Zitat      
Oder ich machs so:

Code:

clear p
figure(5)                                                                                             %eigenvalue influence via pie chart
p=pie (Pod_lambda_Std)     % ,{'1','2','3','4'} lass ich also weg
set(p(1),'FaceColor', [1 0 0])
set(p(2),'FaceColor', [0 1 0])
set(p(3),'FaceColor', [0 0 1])
set(p(4),'FaceColor', [0 1 0.5])
legend([p(1) p(2) p(3) p(4)],{'\lambda_1','\lambda_2','\lambda_3','\lambda_4'},'Location','EastOutside')
 

Dann kommt aber das

??? There is no 'FaceColor' property in the 'text' class.

Error in ==> Pod_Basis at 145
set(p(2),'FaceColor', [0 1 0])

edit by steve: Code-Umgebung ergänzt!
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 12.09.2008, 19:48     Titel:
  Antworten mit Zitat      
Ah, ok.
Neuer Versuch:

Datei erstelleGraphen.m:
Code:
function erstelleGraphen(Matrix)
h=plot(Matrix);
legend([h(1) h(2)],{'1','2'});
title(inputname(1)); % zu 1)
figure;
p=pie(Matrix(1,:));

textObjs = findobj(p,'Type','text');
oldStr = get(textObjs,{'String'});
anz=numel(textObjs);
for k = 1:anz
    Names{k,1} =['\lambda_' num2str(k) ': '];
end
newStr = strcat(Names,oldStr);
set(textObjs,{'String'},newStr);

set(p(1),'FaceColor',get(h(1),'Color'));
set(p(3),'FaceColor',get(h(2),'Color'));
legend(newStr,'Location','EastOutside');


Aufrufen:
Code:
Testmatrix=rand(10,2+ceil(3*rand)); % Anzahl ist jetzt zufaellig
erstelleGraphen(Testmatrix)


Der Fehler wegen FaceColor kommt, weil ja diese handles in p abwechselnd für patch und text Objekte sind, hab ich doch oben geschrieben. Und FaceColor ist eine patch-Eigenschaft.
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
m4n14ccc

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.09.2008, 19:58     Titel:
  Antworten mit Zitat      
Schaut gut aus
Eine letzte Frage:

Wieso machst du sprünge von p(1) p(3) ...
geht nicht p(1) p(2) p(3)??
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 12.09.2008, 20:11     Titel:
  Antworten mit Zitat      
Hrrr Wink
hab ich doch zweimal schon angedeutet.
p(1) Patch Objekt 1. Tortenstück
P(2) Text Objekt 1. Tortenstück
p(3) Patch Objekt 2. Tortenstück
p(4) Text Objekt 2. Tortenstück
u.s.w. (abwechselnd halt)
Patch Objekt meint im Wesentlichen die Fläche des Tortenstücks, die Du siehst. Text Objekt die Beschriftung.
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
m4n14ccc

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.09.2008, 20:31     Titel:
  Antworten mit Zitat      
Herzlichen Dank du hast mir den Tag gerettet
 
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.