Python / Matplotlib - gamme de couleurs et valeurs D'affichage

en utilisant matplotlib avec un tracé de contour, j'ai du mal à obtenir la barre de couleur à afficher comme je veux. J'ai lu de nombreux exemples similaires, mais je n'ai toujours pas pu obtenir ce que je voulais.

dans l'image ci-dessous, je veux que deux choses soient changées. Je veux que la valeur minimale et maximale des valeurs à afficher sur la barre de couleur (le max 2.0 et le min -0.1). Ces deux valeurs doivent être au bord de la barre de couleur. Aussi, je veux que la barre de couleur valeur à chaque transition de couleur. Exemple. dans le graphique ci-dessous, entre 2.1 et 1.8, il y a une autre transition de couleur où la valeur n'est pas affichée.

quelqu'un Peut-il m'aider? Je pense que j'ai besoin d'utiliser norm, mais ça n'a pas marché pour moi jusqu'à présent.

Merci,

enter image description here

Code:

import numpy as np
import matplotlib.pyplot as plt

xi = np.array([0., 0.5, 1.0])
yi = np.array([0., 0.5, 1.0])
zi = np.array([[0., 1.0, 2.0],
               [0., 1.0, 2.0],
               [-0.1, 1.0, 2.0]])

plt.contour(xi, yi, zi, 15, linewidths=0.5, colors='k')
plt.contourf(xi, yi, zi, 15, cmap=plt.cm.jet)
plt.colorbar()
plt.show()
27
demandé sur Scott B 2011-04-29 04:28:29

1 réponses

Si je comprends bien ce que vous voulez, je pense que cela devrait le faire:

import numpy as np
import matplotlib.pyplot as plt

xi = np.array([0., 0.5, 1.0])
yi = np.array([0., 0.5, 1.0])
zi = np.array([[0., 1.0, 2.0],
               [0., 1.0, 2.0],
               [-0.1, 1.0, 2.0]])

v = np.linspace(-.1, 2.0, 15, endpoint=True)
plt.contour(xi, yi, zi, v, linewidths=0.5, colors='k')
plt.contourf(xi, yi, zi, v, cmap=plt.cm.jet)
x = plt.colorbar(ticks=v)
print x
plt.show()

enter image description here

32
répondu tom10 2011-04-29 01:26:56