web-dev-qa-db-fra.com

Créer une légende de palette de couleurs dans Matplotlib

J'utilise imshow() dans matplotlib comme ceci:

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

Comment ajouter une légende montrant la valeur numérique des différentes nuances de gris. Malheureusement, ma recherche sur Google n'a pas révélé de réponse :(

Merci d'avance pour votre aide.

Vince

40
Vince

Simple, juste 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()
27
wordsforthewise

Il y a une fonction intégrée fonction colorbar () dans pyplot. Voici un exemple utilisant des sous-tracés:

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
plot = ax.pcolor(data)
fig.colorbar(plot);
33
Vicki Laidler

Comme d'habitude, je le comprends juste après l'avoir demandé;). Pour la postérité, voici mon coup de couteau:

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

3
Vince