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

Plot mit zwei unterschiedlich langen Colormaps

 

Doxmen
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 03.02.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.02.2016, 13:44     Titel: Plot mit zwei unterschiedlich langen Colormaps
  Antworten mit Zitat      
Hallo zusammen,
Das ist mein erster Beitrag hier, ich versuche jedoch mein Problem so gut wie möglich zu erläutern, damit ich auch möglichst einfach und schnell an eine Antwort komme.

Nun aber zu meinem Problem:
Ich habe ein Feld mit positiven und negativen Werten. Die diese allerdings jeweils eine andere Bedeutung haben, würde ich gerne für positive und negative jeweils eine eigene Colormap verwenden, dazwischen (i.e. fielddata = 0), sollte es weiß bleiben. Das ist auch noch relativ einfach und habe ich in etwa so angestellt:
Code:
map1=colormap(flipud(cool(256)));
map2=colormap(flipud(autumn(256)));
map=[map1; [1 1 1]; map2];
colormap(map)
cb=colorbar;
cboun=max(max(abs(fielddata)));
caxis([-cboun cboun]);

Das Problem dabei ist jedoch, dass die positiven Werte in etwa 3mal so groß sind wie die negativen. Das führt dazu, dass die negative Farbskala quasi einfarbig ist (siehe Anhang).
Die Colorbar sollte also in etwa so aussehen:
-0.05 bis 0 : cool
0 : weiß
0 bis 0.16 : autumn
Ich sitze schon länger daran, doch es hat sich als etwas schwieriger herausgestellt als gedacht. Ich habe auch schon länger im Internet nach einer Lösung gesucht, doch, da ich das Problem jedoch nicht so einfach beschreiben kann (daher auch der vielleicht irreführende Beitrags-Titel), habe ich keine wirkliche Lösung für mein Problem gefunden.
Es gibt wahrscheinlich eine relativ einfache Lösung und hoffe, dass mir hier jemand auf die Sprünge helfen kann.

Viele Grüße,
Doxmen

beispiel.png
 Beschreibung:

Download
 Dateiname:  beispiel.png
 Dateigröße:  63.64 KB
 Heruntergeladen:  340 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.02.2016, 00:21     Titel:
  Antworten mit Zitat      
Hallo,

wie wäre es, caxis "normal" zu lassen und die Anzahl der Farbabstufungen für map1 und map2 zu variieren?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Doxmen
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 03.02.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.02.2016, 19:38     Titel:
  Antworten mit Zitat      
Hallo Harald,

Vielen danke für deine Antwort.
Diese Idee hatte ich auch schon. Dabei habe ich dann ein Verhältnis zwischen Minimum und Maximum gebildet und dann so die Abstufungen verteilt. Jedoch war es durch das Aufrunden nicht so einfach [1 1 1] genau bei null zu erhalten und habe es deshalb relativ schnell aufgegeben.
Ich werde mich aber nächste Woche nochmal dransetzen. Vielleicht hatte ich ja einen kleinen Bug drin.

Gruß
DoXmen
Private Nachricht senden Benutzer-Profile anzeigen
 
Doxmen
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 03.02.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.02.2016, 13:53     Titel:
  Antworten mit Zitat      
Ich habe jetzt mal deine Idee umgesetzt und komme auf ein relativ gutes Ergebnis (siehe Anhang). Gemacht habe ich das in etwa so:
Code:
ncol=2056;
maxdp=max(max(fielddata));
maxenr=-min(min(fielddata));

dp_ratio=maxdp/(maxenr+maxdp);
dp_ncol=round(dp_ratio*ncol);
enr_ncol=ncol-dp_ncol;

map1=flipud(cool(enr_ncol));
map2=flipud(autumn(dp_ncol));
map3=ones(10,3);

map=[map1; map3; map2];
colormap(map)
 

Leider kommt es, wie schon gesagt, zu Ungenauigkeiten durch das Runden. So, dass 0 nicht immer weiß ist, bzw. ein anderer Wert 0 ist. Das habe ich jetzt einfach umgangen indem ich mehr [1 1 1] Zeilen eingefügt habe. Das funktioniert so auch ganz gut, kann aber vielleicht noch etwas verfeinert werden.
Ansonsten vielen Danke für deine Hilfe und bis dann.

Gruß
DoXmen

beispiel2.jpg
 Beschreibung:

Download
 Dateiname:  beispiel2.jpg
 Dateigröße:  107.22 KB
 Heruntergeladen:  340 mal
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.