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é.
Utilisez la fonction CLIM (équivalente à la fonction CAXIS dans MATLAB):
la source
Je ne sais pas si c'est la solution la plus élégante (c'est ce que j'ai utilisé), mais vous pouvez mettre à l'échelle vos données dans la plage comprise entre 0 et 1, puis modifier la barre de couleurs:
Avec les deux limites différentes, vous pouvez contrôler la plage et la légende de la barre de couleurs. Dans cet exemple, seule la plage comprise entre -0,5 et 1,5 est affichée dans la barre, tandis que la palette de couleurs couvre -2 à 2 (il peut donc s'agir de votre plage de données, que vous enregistrez avant la mise à l'échelle).
Ainsi, au lieu de mettre à l'échelle la palette de couleurs, vous mettez à l'échelle vos données et adaptez la barre de couleurs à cela.
la source
Utilisation de l'environnement figure et .set_clim ()
Cette alternative pourrait être plus simple et plus sûre si vous avez plusieurs parcelles:
Une seule barre de couleurs
La meilleure alternative est alors d'utiliser une seule barre de couleur pour l'ensemble du tracé. Il existe différentes manières de le faire, ce tutoriel est très utile pour comprendre la meilleure option. Je préfère cette solution que vous pouvez simplement copier et coller au lieu de la partie précédente de la barre de couleurs de visualisation du code.
PS
Je suggérerais d'utiliser
pcolormesh
au lieu depcolor
car c'est plus rapide (plus d' infos ici ).la source