Sie können dies mit dem folgenden Code tun, und der Code in Ihrer Frage war tatsächlich sehr nahe an dem, was Sie brauchten. Alles, was Sie tun müssen, ist, das cmap
Objekt aufzurufen, das Sie haben.
import matplotlib
cmap = matplotlib.cm.get_cmap('Spectral')
rgba = cmap(0.5)
print(rgba) # (0.99807766255210428, 0.99923106502084169, 0.74602077638401709, 1.0)
Bei Werten außerhalb des Bereichs [0.0, 1.0] wird die Unter- bzw. Überfarbe zurückgegeben. Dies ist standardmäßig die minimale und maximale Farbe innerhalb des Bereichs (also 0,0 und 1,0). Diese Standardeinstellung kann mit cmap.set_under()
und geändert werden cmap.set_over()
.
Für "spezielle" Zahlen wie np.nan
und np.inf
standardmäßig wird der Wert 0.0 verwendet. Dies kann cmap.set_bad()
ähnlich wie oben und unten geändert werden .
Schließlich müssen Sie Ihre Daten möglicherweise so normalisieren, dass sie dem Bereich entsprechen [0.0, 1.0]
. Dies kann matplotlib.colors.Normalize
einfach wie im kleinen Beispiel unten gezeigt erfolgen, in dem die Argumente vmin
und die vmax
Beschreibung der Zahlen auf 0.0 bzw. 1.0 abgebildet werden sollen.
import matplotlib
norm = matplotlib.colors.Normalize(vmin=10.0, vmax=20.0)
print(norm(15.0)) # 0.5
Ein logarithmischer Normalisierer ( matplotlib.colors.LogNorm ) ist auch für Datenbereiche mit einem großen Wertebereich verfügbar.
(Vielen Dank an Joe Kington und tcaswell für Vorschläge zur Verbesserung der Antwort.)
cmap.set_under('red'); print cmap(0.0), cmap(-0.01)
set_bad
welche definieren, was in fürnp.nan
undnp.inf
iirc tut. Sie sollten auchNormalize
hier die Methoden erwähnen .module 'matplotlib' has no attribute 'cm'
, versuchen Sie, die ersten beiden Zeilen durchimport matplotlib.pyplot as plt; cmap = plt.cm.get_cmap('Spectral')
Um einen rgba-Integer-Wert anstelle eines Float-Werts zu erhalten, können wir dies tun
Um den Code basierend auf der Antwort von Ffisegydd zu vereinfachen, würde der Code folgendermaßen aussehen:
quelle
Um auf den Lösungen von Ffisegydd und amaliammr aufzubauen , sehen Sie hier ein Beispiel, in dem wir eine CSV-Darstellung für eine benutzerdefinierte Farbkarte erstellen:
quelle
Der Vollständigkeit halber sind dies die cmap-Optionen, auf die ich bisher gestoßen bin:
quelle