Ich versuche, imshow in matplotlib zu verwenden, um Daten als Heatmap zu zeichnen, aber einige der Werte sind NaNs. Ich möchte, dass die NaNs als Sonderfarbe gerendert werden, die in der Farbkarte nicht enthalten ist.
Beispiel:
import numpy as np
import matplotlib.pyplot as plt
f = plt.figure()
ax = f.add_subplot(111)
a = np.arange(25).reshape((5,5)).astype(float)
a[3,:] = np.nan
ax.imshow(a, interpolation='nearest')
f.canvas.draw()
Das resultierende Bild ist unerwartet ganz blau (die niedrigste Farbe in der Jet-Farbkarte). Wenn ich das Plotten jedoch so mache:
ax.imshow(a, interpolation='nearest', vmin=0, vmax=24)
--dann bekomme ich etwas Besseres, aber die NaN-Werte werden in derselben Farbe wie vmin gezeichnet ... Gibt es eine elegante Möglichkeit, NaNs so einzustellen, dass sie mit einer speziellen Farbe gezeichnet werden (z. B. grau oder transparent)?
matplotlib.__version__=='1.2.1'
) funktioniert dies problemlos.