2016-03-30 20 views
0

in Matlab betrachtet eine MxN-MatrixA mit Werten in [-o p] mit M, N ganzzahlig und o, p als Doppelwert. Die Anzahl der Werte auf beiden Seiten von Origo in M und N sind nicht notwendigerweise gleich.Sollwert auf eine bestimmte Farbe in Matlab colorbar

A verwendet visualisiert Matlabs imagesc und colorbar.

Wie kann ich Colorbar zwingen, Werte von A, die als eine bestimmte Farbe nahe Null sind, zu setzen?

Bitte beachten Sie, dass ich (zum Beispiel) 'hard code' Null (0) nicht als grün (0 128 0) möchte, sondern stattdessen die Standard - RGB - oder HSV - Farbkarte verwenden möchte Werte in A, während immer noch Null (oder nahe bei Null) im grünen Farbton gehalten wird.

+0

Passen Sie die [color Grenzen] (http://www.mathworks.com/help/matlab/ref/caxis.html?refresh=true), die die Abbildung der colorbar auf Ihre Daten – Suever

+0

ich kontrolliere Dies ist jedoch nicht in der Lage, einer bestimmten Region des Gradienten Werte nahe Null oder Null zuzuordnen. Wie würden Sie beim Mapping sagen [-71 ... 0 ... 300], so dass die Null und die Werte in der Nähe des grünen Gradienten liegen? – Peter

+0

Abgesehen von der Erstellung einer benutzerdefinierten Colormap, müssten Sie 'caxis ([- 300 300])' ' – Suever

Antwort

2

Wenn Sie den Wert 0 tatsächlich wollen, dass in der Mitte des colormap sein, Sie wollen Ihre Farbe Grenzen setzen (caxis der CLims Eigenschaft der Achsen verwendet wird), nachdem die maximale Größe der Daten zu bestimmen :

limit = max(abs(data(:))); 
caxis([-limit, limit]); 
0

Dies ist, was ich mit gehe. Ich habe das Gefühl, dass es einen schnelleren/besseren Weg gibt, also poste bitte Verbesserungen.

[minM minMlix] = min(oM(:)); 
[maxM maxMlix] = max(oM(:)); 
gr1 = abs(minM); 
gr2 = abs (maxM); 
if (gr1 > gr2) 
    maxM = gr1; 
elseif (gr1 < gr2) 
    minM = -maxM; 
end 
caxis([minM maxM]) 
+0

Was ist 'val = max (abs (oM (:))); Caxis ([- val, val]); ' – Suever

+0

Ja tatsächlich. Posten Sie es als eine Lösung, wenn Sie möchten, dass ich es stimme. – Peter