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

verschieden farbiger Mehrfachplot

 

ChriWo
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 18.06.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2014, 09:23     Titel: verschieden farbiger Mehrfachplot
  Antworten mit Zitat      
Hallo miteinander,

2 Problemchen habe ich bei meinem aktuellen Plot, bei denen ich hoffe, dass ihr mir helfen könnt.

1. Ich möchte gerne mehrere Spektrale Signaturen eines Hyperspektralbildes plotten lassen. Für eine bessere Übersicht und Klassifikation der einzelnen Signaturen, möchte ich diese gerne verschieden farbig darstellen.
Für 3 Signaturen mit 3 verschiedenen Farben habe ich das sehr simpel gelöst:
(x ist eine Matrix mit 3 Koordinatenwerten, welche ich gerne erweitern möchte)

Code:
for i=1:size(x,1)
    Img = reshape( CIR(x(i,1),x(i,2),:), size(CIR,3), 1 );
   
    if i==1 Color = [1 0 0]; end
    if i==2 Color = [0 1 0]; end
    if i==3 Color = [0 0 1]; end
       
    plot( Img, '-x', 'Color', Color ); hold on;
    title('Spectral Plot')
    xlabel('Spectral Bands')
    ylabel('Reflectivity')
end


Jetzt möchte ich aber gerne 9, oder später sogar noch mehr Signaturen darstellen. Die wöllte ich dann entweder in Gruppen farbig darstellen (die ersten 3 grün, die nächsten 3 rot, die letzten 3 blau), oder einfach alle unterschiedlich.
Ich habe da mal etwas von einem laufenden Skalar gehört, der mit i durch eine Farbpalatte läuft?!

2. Auf der x-Achse wird von 0-14 gezählt, da ich aktuell 13 Bänder eingeladen habe. Nun sind das aber nicht die Bänder 1-13, sondern unterschiedliche aus dem Bereich von 1 - 138. (keine gleichmäßigen Abstände) Kann ich die irgendwie manuell eintragen?

Vielen Dank im Vorraus für Eure Hilfe!

MfG,
Christian
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: 19.06.2014, 13:31     Titel: Re: verschieden farbiger Mehrfachplot
  Antworten mit Zitat      
Hallo ChriWo,

Zunächst mal eine Vereinfachung Deines Codes:
Code:
for k = 1:size(x,1)   %"i" ist die imaginäre Einheit
    Img = reshape( CIR(x(k,1),x(k,2),:), size(CIR,3), 1 );    
    Color = zeros(1, 3);
    Color(k) = 1;
    ... etc
 


Für eine größere "Color-Map" gibt es viele Möglichkeiten. Siehe:
Code:

Zitat:
Die wöllte ich dann entweder in Gruppen farbig darstellen (die ersten 3 grün, die nächsten 3 rot, die letzten 3 blau), oder einfach alle unterschiedlich.

Nun kann ich nicht erraten, was "in Gruppen farbig" genau bedeutet.

Du kannst auf jeden Fall eine Color-Map als [n x 3] Matrix erstellen, wobei n die Anzahl der Farben ist. Und dann die entsprechende Farbe per "Color = Map(k, :)" aussuchen.

Zitat:
2. Auf der x-Achse wird von 0-14 gezählt, da ich aktuell 13 Bänder eingeladen habe.

Meinst Du, dass von 0 bis 13 gezählt wird, weil Du 14 Bänder hast?
Bedenke beim Posten, dass es Dir vollkommen klar ist, was ein "Band" ist, die Leser im Forum wissen aber erstmal nicht, wovon Du sprichst.

Zitat:
Nun sind das aber nicht die Bänder 1-13, sondern unterschiedliche aus dem Bereich von 1 - 138. (keine gleichmäßigen Abstände) Kann ich die irgendwie manuell eintragen?

Wo möchtest Du was eintragen? In die Legende, in die X-Achsen-Beschriftung oder sollen die "Bänder" an unterschiedlichen Punkten auf der X-Achse eingetragen werden?

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

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 18.06.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2014, 13:59     Titel:
  Antworten mit Zitat      
Hallo Jan,

die Vereinfachung habe ich so jetzt erstmal eingebaut, danke.
Vermutlich belasse ich es bei den 3 Klassen, weshalb ich das eventuell so lassen könnte. Für mehr Farben hilft mir das aber noch nicht wirklich, oder?

Ich versuche mal mein Problem etwas genauer zu schildern. Dazu habe ich einen screenshot von meinem aktuellen plot angehängt.

Mittlerweile lasse ich 9 Signaturen anzeigen. Dazu habe ich 3 Matrizen (x, y, z) mit jeweils 3 Signaturen erstellt. Diese lasse ich dann nacheinander durch einzelne Aufrufe plotten. Das führt erstmal dazu, dass alle in der richtigen Farbe dargestellt werden. (in Gruppen: also 3x grün, 3x blau, 3x rot) Elegant ist das so aber sicherlich nicht, und erweiterbar ist es auch nicht wirklich. (zumindest, wenn ich die Anzahl der Gruppen erhöhen wöllte)

Code:

for k=1:size(x,1)
    Img = reshape( CIR(x(k,1),x(k,2),:), size(CIR,3), 1 );
    Img2 = reshape( CIR(y(k,1),y(k,2),:), size(CIR,3), 1 );
    Img3 = reshape( CIR(z(k,1),z(k,2),:), size(CIR,3), 1 );
   
    Color = zeros(1, 3);
    Color(k) = 1;
       
    plot( Img, '-x', 'Color', Color ); hold on;
    plot( Img2, '-x', 'Color', Color ); hold on;
    plot( Img3, '-x', 'Color', Color ); hold on;
    title('Spectral Plot')
    xlabel('Spectral Bands')
    ylabel('Reflectivity')
end
 


Mit dem screenshot wird vielleicht auch mein 2tes Problem der Achsenbeschriftung etwas verdeutlicht. Meine 13 Bänder bedeuten sozusagen, dass ich 13 Einträge auf der X-Achse habe. Im moment steht an der Achse 0-14, aber ich hätte da gerne (meinetwegen immernoch 0 am Anfang) 12, 20, 26, 31, 56, 57, 59, 63, 69, 100, 119, 134, 138 stehen. Also an Stelle der 1 die 12, statt 2 die 20, statt 3 die 26 usw. (nur Beschriftung, keine entsprechenden Abstände) Ist das so einigermaßen verständlich, was ich meine?

spectralplot.png
 Beschreibung:

Download
 Dateiname:  spectralplot.png
 Dateigröße:  75.72 KB
 Heruntergeladen:  344 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
ChriWo
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 18.06.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.06.2014, 09:04     Titel:
  Antworten mit Zitat      
Hallo, kann mir denn niemand helfen?
zumindest mit der Beschriftung der Achse? (nicht Achsentitel, sondern Werte)
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.06.2014, 21:44     Titel:
  Antworten mit Zitat      
Hallo ChriWo,

Hast Du Dir die Dokumentation zu ColorMap mal durchgelesen?

Die Achsenbeschriftung gehört zum AXES Objekt. Man findet unter "doc axes" alle benötigten Informationen. Matlab's Dokumentation ist wirklich sehr gut und man sollte sie immer zu Rate ziehen.

Für 57 Farben könntest Du z.B. so vorgehen:
Code:
axes('NextPlot', 'add');
Map = jet(57);
for k = 1:57
  Color = Map(k, :);
  plot(1:10, rand(1, 10)+k, 'Color', Color);
end


Zur Achsenbeschriftung:
Code:
figure;
axes('XTick', 1:5, 'XTickLabel', {'10', 'a', '27', '-4', 'pi'}, 'XLim', [0, 6]);

Hilft das?

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

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 18.06.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2014, 11:11     Titel:
  Antworten mit Zitat      
Hallo Jan, vielen Dank für deine Antwort.

Ich bin leider nicht so der Programmier Crack, weshalb für mich die Dokumentation teilweise große Verwirrung stiftet, statt mich auf die richtige Idee zu bringen.

Vielen Dank für die Lösung mit der Achsenbeschriftung. Das ist genau, was ich gesucht habe.
Mit den verschiedenen Farben muss ich nun noch ein bisschen basteln.

MfG,
Chris
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.