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

Mehrere Histogrammfarben in einem Plot (im GUI)

 

Strohfeuer
Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 17.09.08
Wohnort: Berlin
Version: 7.5.0.342 (R2007b)
     Beitrag Verfasst am: 22.09.2008, 15:38     Titel: Mehrere Histogrammfarben in einem Plot (im GUI)
  Antworten mit Zitat      
Ich will mich ggf. schon vorab für die Dummheit dieser Frage entschuldigen, aber irgendwie stehe ich da gerade auf dem Schlauch.
Ich möchte verschiedene Histogramme in einem Diagramm in meinem GUI plotten. Allerdings möchte ich jeder "Kurve" eine eigene Farbe geben. Entweder bin ich akut zu blöd oder die zugehörige Property ist verdammt gut versteckt. Jedenfalls finde ich nicht die entsprechende Eigenschaft, um die Farbe zu ändern. Deshalb überlagern sich die verschiedenen Balken zu einer undurchsichtigen, gleichfarbigen Masse.
Bislang plotte ich meine Histogramme so:
Code:

for (i=1:number_of_signals)
   hist(handles.Diagramm1, signal1);
end
 

Im GUI habe ich Diagramm1 bei der Eigenschaft "NextPlot" den Wert "new" zugeordnet.
Private Nachricht senden Benutzer-Profile anzeigen


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 22.09.2008, 15:59     Titel:
  Antworten mit Zitat      
Moin,

hast du mal
Code:
for (i=1:number_of_signals)
   hold all;
   hist(handles.Diagramm1, signal1);
end
 
probiert?

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
nschlange
Ehrenmitglied

Ehrenmitglied



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

ich versteh die Schleife nicht, macht die nicht number_of_signals mal dasselbe?

Ich würde den Umweg über
Code:
gehen, d.h. mit hist nur die Häufigkeiten berechnen und diese dann mit bar plotten.
So irgendwie
Code:
clear all;
clc;

daten = ceil(10.*rand(3,20));
[Y,n]=hist(daten');
figure;
bar(n,Y)


Edit: Ganzzahlige Zufallszahlen genommen...
_________________

Viele Grüße
nschlange

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 17.09.08
Wohnort: Berlin
Version: 7.5.0.342 (R2007b)
     Beitrag Verfasst am: 22.09.2008, 16:49     Titel:
  Antworten mit Zitat      
Ja, die Schleife oben macht natürlich immer wieder das Gleiche.
Mein Problem ist, dass ich nicht weiß, wie man die Farbe einer Kurve in einem Diagramm in meinem GUI ändert.
Das Histogramm wird korrekt erzeugt und dargestellt. Nur überlagern sich die verschiedenen Histogramme durch die Gleichfarbigkeit so, dass man nichts Sinnvolles mehr erkennen kann.

@Steve/Alex Wink
Code:
hat leider nichts verändert
@nschlange: Mit
Code:
sieht der Plot genauso aus.

Mal ne Frage zum generellen Ablauf: Sollte ich erst ein Figure komplett erstellen und es dann quasi in mein GUI verschieben oder direkt in meinem Diagramm im GUI operieren?
Private Nachricht senden Benutzer-Profile anzeigen
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 22.09.2008, 16:58     Titel:
  Antworten mit Zitat      
Strohfeuer hat Folgendes geschrieben:

@nschlange: Mit
Code:
sieht der Plot genauso aus.


Nicht, wenn Du das auf eine Matrix anwendest (siehe das Beispiel).
Wenn Du alle Signale zeilenweise in eine Matrix schreibst kannst Du auf die for-Schleife verzichten und Farben werden automatisch zugewiesen (kannst Du dann natürlich auch beliebig ändern).
Gib mal ein lauffähiges Beispiel samt Testdaten.
_________________

Viele Grüße
nschlange

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 17.09.08
Wohnort: Berlin
Version: 7.5.0.342 (R2007b)
     Beitrag Verfasst am: 22.09.2008, 17:36     Titel:
  Antworten mit Zitat      
Das Problem bei der Übergabe an eine Matrix ist, dass die Daten vorher 3-dimensional gespeichert sind und ich es gerade nicht hinbekomme, dass MATLAB versteht, welche Daten ich der neuen Matrix weiter reichen möchte.

Eine aktuelle Matrix sehe so aus:
signal = [0.0460, 0.0012; 0.0012, 0.0581];
Private Nachricht senden Benutzer-Profile anzeigen
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 22.09.2008, 17:44     Titel:
  Antworten mit Zitat      
Wie machst Du es denn mit der Schleife?
_________________

Viele Grüße
nschlange

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 17.09.08
Wohnort: Berlin
Version: 7.5.0.342 (R2007b)
     Beitrag Verfasst am: 22.09.2008, 17:57     Titel:
  Antworten mit Zitat      
Code:
for (i=1:number_of_signals)
signal = datasaource{i}(1,:);
hist(handles.Diagram1, signal);
end
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 22.09.2008, 18:07     Titel:
  Antworten mit Zitat      
Du kannst die Farben über die Einstellung 'FaceColor' auch selbstständig angeben. Siehe dazu das 2. Beispiel zu
Code:


Bei
Code:
funktioniert das fast genauso...

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 22.09.2008, 18:11     Titel:
  Antworten mit Zitat      
Gibts dann nicht das Problem, dass findobj alle patch objects findet, d.h. alle die übereinander im figure liegen?

Ich habe auch bar vorgeschlagen, weil man da ein handle für jeden Reihe bekommt, dann steht einem die Welt offen.
_________________

Viele Grüße
nschlange

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 17.09.08
Wohnort: Berlin
Version: 7.5.0.342 (R2007b)
     Beitrag Verfasst am: 22.09.2008, 18:14     Titel:
  Antworten mit Zitat      
Deshalb fragte ich ja, ob man quasi erst das komplette Figure erstellt und es dann in das GUI setzt oder ob man direkt im GUI arbeitet.
Wenn ich nach meiner Methode das Diagramm im GUI erzeuge und danach 'FaceColor' editieren will, bekomme ich diese (berechtigte) Fehlermeldung "Ther is no 'FaceColor' property in the 'axes' class.

edit: Wenn mir jemand verrät, wie ich die zweidimensionale Matrix mit Werten aus meinem dreidimensionalen Speicherbollwerk fülle, versuche ich sofort an der bar-Variante Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 22.09.2008, 19:12     Titel:
  Antworten mit Zitat      
Deswegen hatte ich um ein Beispiel gebeten.
datasource ist eine cell?

Code:
clear all;
clc;

datasource=cell(3,1);
datasource{1}=ceil(10.*rand(1,10));
datasource{2}=ceil(10.*rand(1,10));
datasource{3}=ceil(10.*rand(1,10));

daten=cell2mat(datasource);
[Y,n]=hist(daten');
h=bar(Y);
set(h(2),'EdgeColor','m','LineWidth',2)


Edit: Neues Beispiel:
Code:
clear all;
clc;

datasource=cell(3,1);
datasource{1}=rand(1,10);
datasource{2}=rand(1,10);
datasource{3}=rand(1,10);

daten=cell2mat(datasource);
[Y,n]=hist(daten');
h=bar(n,Y);
set(h(2),'EdgeColor','m','LineWidth',2)

% Gleiches Ergebnis geht auch mit hist, aber ohne die handles
figure;
hist(daten');

_________________

Viele Grüße
nschlange

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 17.09.08
Wohnort: Berlin
Version: 7.5.0.342 (R2007b)
     Beitrag Verfasst am: 23.09.2008, 11:58     Titel:
  Antworten mit Zitat      
Da ich jetzt endlich geschnallt habe, wie man ein bereits vorhandenes Diagramm in einm GUI anspricht, habe ich es auch hin bekommen, dass ich mit Befehlen wie plot und bar darin hantieren kann. Dadurch ist auch die Farbeinstellung kein Problem mehr und ich muss mir jetzt nur noch einen sinnvollen Algorithmus für die Berechnung der nBins bei hist in Abhängigkeit der Anzahl der Y-Werte überlegen...
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.