J'ai le code suivant:
import matplotlib.pyplot as plt
cdict = {
'red' : ( (0.0, 0.25, .25), (0.02, .59, .59), (1., 1., 1.)),
'green': ( (0.0, 0.0, 0.0), (0.02, .45, .45), (1., .97, .97)),
'blue' : ( (0.0, 1.0, 1.0), (0.02, .75, .75), (1., 0.45, 0.45))
}
cm = m.colors.LinearSegmentedColormap('my_colormap', cdict, 1024)
plt.clf()
plt.pcolor(X, Y, v, cmap=cm)
plt.loglog()
plt.xlabel('X Axis')
plt.ylabel('Y Axis')
plt.colorbar()
plt.show()
Cela produit donc un graphique des valeurs «v» sur les axes X vs Y, en utilisant la palette de couleurs spécifiée. Les axes X et Y sont parfaits, mais la palette de couleurs se propage entre le minimum et le maximum de v. Je voudrais forcer la palette de couleurs à se situer entre 0 et 1.
J'ai pensé à utiliser:
plt.axis(...)
Pour définir les plages des axes, mais cela ne prend que des arguments pour le min et le max de X et Y, pas la palette de couleurs.
Éditer:
Pour plus de clarté, disons que j'ai un graphique dont les valeurs varient (0 ... 0,3), et un autre graphique dont les valeurs (0,2 ... 0,8).
Dans les deux graphiques, je veux que la plage de la barre de couleurs soit (0 ... 1). Dans les deux graphiques, je veux que cette gamme de couleurs soit identique en utilisant la gamme complète de cdict ci-dessus (donc 0,25 dans les deux graphiques sera la même couleur). Dans le premier graphique, toutes les couleurs comprises entre 0,3 et 1,0 ne figureront pas dans le graphique, mais figureront dans la barre de couleurs située sur le côté. Dans l'autre, toutes les couleurs comprises entre 0 et 0,2 et entre 0,8 et 1 ne figureront pas dans le graphique, mais figureront dans la barre de couleurs sur le côté.