2015-08-26 5 views
7

Próbuję przetłumaczyć dane z pliku csv na mapę termiczną. W tej chwili moja mapa wygląda następująco: enter image description hereDodaj legendę do mojej mapy cieplnej

Ale tęskni za legendą! To jest mój kod:

import matplotlib.pyplot as plt 
import numpy as np 

column_labels = list(range(0,24)) 
row_labels = ["Lundi", 
       "Mardi", 
       "Mercredi", 
       "Jeudi", 
       "Vendredi", 
       "Samedi", 
       "Dimanche"] 
data = np.array([ 
       [0,0,0,0,0,0,0,0,0,0,434,560,650,340,980,880,434,434,0,0,0,0,0,0], 
       [0,0,0,0,0,0,0,434,560,0,650,0,0,0,0,340,980,0,0,0,880,0,434,343], 
       [0,0,0,0,0,0,0,0,0,0,434,560,650,340,980,880,434,434,0,0,0,0,0,0], 
       [0,0,0,0,0,0,0,434,560,0,650,0,0,0,0,340,980,0,0,0,880,0,434,343], 
       [0,0,0,0,0,0,0,0,0,0,434,560,650,340,980,880,434,434,0,0,0,0,0,0], 
       [0,0,0,0,0,0,0,434,560,0,650,0,0,0,0,340,980,0,0,0,880,0,434,343], 
       [0,0,0,0,0,0,0,0,0,0,434,560,650,340,980,880,434,434,0,0,0,0,0,0] 
       ]) 
fig, axis = plt.subplots() # il me semble que c'est une bonne habitude de faire supbplots 
heatmap = axis.pcolor(data, cmap=plt.cm.Blues) # heatmap contient les valeurs 

axis.set_yticks(np.arange(data.shape[0])+0.5, minor=False) 
axis.set_xticks(np.arange(data.shape[1])+0.5, minor=False) 

axis.invert_yaxis() 

axis.set_yticklabels(row_labels, minor=False) 
axis.set_xticklabels(column_labels, minor=False) 

fig.set_size_inches(11.03, 3.5) 

plt.savefig('test.png', dpi=100) 

Jak mogę legalizować ten wątek? Tak jak w tym: Heatmap made in javascript

Bardzo dziękuję za pomoc!

+0

nie jestem zaznajomiony z użyciem Strefy, ale dla plt.imshow wystarczy użyć plt.legend. Jeśli to nie zadziała, możesz rozważyć utworzenie tylko wątku z mapą ciepła 1D poniżej, gdzie wejście to tylko lista od 0 do najwyższego numeru. – BlivetWidget

Odpowiedz

14

Brzmi to, jak chcesz, to pasek kolorów. Po wykreśleniu mapy ciepła możesz użyć plt.colorbar(heatmap), aby dodać pasek kolorów.

Heatmap with colorbar