matplotlib imshow-normalisation des couleurs par défaut
j'ai toujours eu des problèmes avec mes cartes de couleurs en utilisant imshow
, certaines couleurs semblent juste devenir noires. J'ai enfin réalisé que imshow
semble, par défaut, normaliser la matrice des valeurs flottantes que je lui donne.
j'aurais attendu un tableau tel que [[0,0.25],[0.5,0.75]]
les couleurs de la carte, correspondant à ceux des valeurs absolues, mais de 0,75 sera interprété comme un 1. Dans le cas extrême, un tableau N x N de 0.2 (par exemple), il suffit de produire un grand carré noir, plutôt que ce à quoi on s'attendrait à 0,2 correspond dans la carte couleur (peut-être un 20% de gris).
Existe-t-il un moyen de prévenir ce comportement? Il est particulièrement gênant lorsqu'couleur personnalisée, les cartes ont de nombreuses discontinuités, un petit changement d'échelle, pourrait provoquer toutes les couleurs à changer complètement.
1 réponses
spécifiez juste vmin=0, vmax=1
.
Par défaut, imshow
normalise les données à son minimum et max. Vous pouvez contrôler cela avec l'un des vmin
et vmax
arguments ou avec le norm
argument (si vous voulez une échelle non linéaire).
comme un 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()