2010-03-15 22 views
21

Sto usando imshow() in matplotlib in questo modo:Creazione di una mappa colori leggenda in Matplotlib

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

Come faccio ad aggiungere una leggenda che mostra il valore numerico per le diverse sfumature di grigio. Purtroppo, il mio googling non ha scoperto una risposta :(

vi ringrazio in anticipo per l'aiuto

Vince

risposta

7

Semplice, basta 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

Come al solito, ho capirlo subito dopo lo chiedo;.). Per i posteri, ecco il mio tentativo:

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() 

Sono sicuro che esiste una soluzione più elegante.

Vince

29

C'è un incorporato colorbar() function in pyplot.

+0

Perfetto! Grazie. – Vince

+9

Se si utilizzano sottotrame, potrebbe essere necessario usarlo come 'fig = plt.figure(); ax = fig.add_subplot (1,1,1); plot = ax.pcolor (dati); fig.colorbar (trama); ' –

+0

Gli esempi di codice sarebbero stati carini; Pensavo che il protocollo fosse link-only Le risposte sono considerate scadenti. L'uso più semplice è semplicemente 'plt.colorbar()' – wordsforthewise

Problemi correlati