J'ai toujours eu des problèmes avec mes cartes de couleurs lors de l'utilisation de imshow
, certaines couleurs semblent devenir noires. J'ai finalement réalisé que imshow
semble, par défaut, normaliser la matrice des valeurs à virgule flottante que je lui donne.
Je m'attendais à un tableau tel que [[0,0.25],[0.5,0.75]]
pour afficher les couleurs appropriées de la carte, correspondant à ces valeurs absolues mais le 0,75 sera interprété comme un 1. Dans le cas extrême, un tableau N x N de 0,2 (par exemple), produirait juste un grand carré noir , plutôt que ce à quoi on s'attendrait à ce que 0,2 corresponde dans la carte des couleurs (peut-être un gris à 20%).
Existe-t-il un moyen d'empêcher ce comportement? Il est particulièrement gênant lorsque les cartes de couleurs personnalisées présentent de nombreuses discontinuités, un petit changement d'échelle pourrait entraîner le changement complet de toutes les couleurs.
Précisez simplement vmin=0, vmax=1
.
Par défaut, imshow
normalise les données à leurs valeurs min et max. Vous pouvez contrôler cela avec les arguments vmin
et vmax
ou avec l'argument norm
(si vous voulez une mise à l'échelle non linéaire).
Comme exemple rapide:
import matplotlib.pyplot as plt
data = [[0, 0.25], [0.5, 0.75]]
fig, ax = plt.subplots()
im = ax.imshow(data, cmap=plt.get_cmap('hot'), interpolation='nearest',
vmin=0, vmax=1)
fig.colorbar(im)
plt.show()