Automatischer Aufbau einer Colormap um den Wert Null

8

Ich möchte oft ein Differenzbild zeichnen, das von einer negativen bis zu einer positiven Zahl reicht. Das Problem dabei ist, dass die Colormaps von Matlab nur vom Minimalwert bis zum Maximalwert skalieren, sich aber nicht um einen mittleren Wert kümmern (dieser Fall ist Null). Zum Beispiel habe ich das Bild peaks mit einem einzelnen Pixel anders erzeugt:

wo das Original so aussieht:

Also sind die Nullwerte am oberen Bild blau und am unteren Rand grün ... (Beispiel: jet colormap)

Ich möchte eine Colormap erstellen, die automatisch Nullwerte als die gleiche Farbe darstellt, unabhängig davon, was die Min \ Max-Werte sind. Wie kann ich das tun?

    
Amro 27.05.2013, 22:19
quelle

3 Antworten

4

Sie können Dieses Tool von der FEX. Es erzeugt blau-weiß-rote Colormap, wobei Null immer der weißen Farbe entspricht. Für den Fall, dass Sie mehr als zwei Farben einbeziehen möchten, gehen Sie in die code und passen sie an Ihre Bedürfnisse an.

Es gibt einige weitere Optionen in der FEX, die ähnliche Dinge tun (hier ist eins und ein anderes ) ...

    
bla 27.05.2013, 22:45
quelle
9

Die Farbzuordnung kann mit der Funktion caxis gesteuert werden (wodurch die Eigenschaft CLim des aktuellen Achsenobjekts festgelegt wird). Die Annahme ist natürlich, dass eine skalierte Farbzuordnung verwendet wird, im Gegensatz zur direkten Farbzuordnung (lesen Sie die Eigenschaft CDataMapping ). Indem Sie einen nullzentrierten Bereich als Eingabe verwenden, können Sie sicherstellen, dass Null immer in der Mitte ist.

Hier ist ein Beispiel:

%Vor%

Jetzt passen wir die Farbzuordnung an, um sie symmetrisch um Null zu machen:

%Vor%

Beachten Sie, dass ich das Light Bartlein-Farbschema verwende, das entworfen wurde als eine divergente Palette, um Unterschiede zwischen zwei Extremen hervorzuheben.

Wenn der ursprüngliche Bereich stark verzerrt ist, möchten Sie möglicherweise die Farbabbildung neu berechnen, um ihr mehr Werte im überstreckten Teilbereich zu geben.

    
Amro 27.05.2013 23:38
quelle
3

Ich mag die anderen Antworten, besonders die von @Amro. Aber es sieht so kompliziert aus :) Und deine caxis Parameter müssen nicht von deiner Eingabe abhängen, du kannst sie einfach von der Achse holen. All dies kann ein One-Liner sein:

%Vor%

Das ist es. Dies funktioniert ab MATLAB R2014b, das über das neue Zahlen-Handle-System verfügt (weitere Details finden Sie unter hier ). In früheren Versionen (und neuen, wenn Sie bevorzugen) würden Sie

verwenden %Vor%

oder mit caxis ,

%Vor%

Das zu automatisieren ist auch ziemlich einfach:

%Vor%

Damit können Sie dies tun

%Vor%

und der mittlere Streifen (0) ist immer die mittlere Farbe der Farbleiste.

    
bers 03.11.2015 22:40
quelle

Tags und Links