2010-03-15 5 views
21

J'utilise imshow() dans matplotlib comme ceci:Création d'une légende dans Colormap Matplotlib

import numpy as np 
import matplotlib.pyplot as plt 
mat = '''SOME MATRIX''' 
plt.imshow(mat, origin="lower", cmap='gray', interpolation='nearest') 
plt.show() 

Comment puis-je ajouter une légende indiquant la valeur numérique pour les différentes nuances de gris. Malheureusement, mon googler n'a pas découvert une réponse :(

Merci à l'avance pour l'aide

Vince

Répondre

7

Simple, il suffit plt.colorbar():

import numpy as np 
import matplotlib.pyplot as plt 
mat = np.random.random((10,10)) 
plt.imshow(mat, origin="lower", cmap='gray', interpolation='nearest') 
plt.colorbar() 
plt.show() 
1

Comme d'habitude, je le figure juste après que je le demande,.). Pour la postérité, voici mon coup de poing:

m = np.zeros((1,20)) 
for i in range(20): 
    m[0,i] = (i*5)/100.0 
print m 
plt.imshow(m, cmap='gray', aspect=2) 
plt.yticks(np.arange(0)) 
plt.xticks(np.arange(0,25,5), [0,25,50,75,100]) 
plt.show() 

Je suis sûr qu'il existe une solution plus élégante.

Vince

29

Il y a un colorbar() function dans builtin pyplot.

+0

Parfait! Je vous remercie. – Vince

+9

Si vous utilisez des sous-placettes, vous devrez peut-être l'utiliser comme 'fig = plt.figure(); ax = fig.add_subplot (1,1,1); plot = ax.pcolor (données); fig.colorbar (plot); ' –

+0

Exemple (s) de code aurait été sympa; Je pensais que le protocole était des réponses de lien seulement sont considérées comme pauvres. L'utilisation la plus facile est juste 'plt.colorbar()' – wordsforthewise