2012-01-06 13 views
5

Sto scrivendo uno script per creare una heatmap per i dati di dispersione su due dimensioni. Il seguente è un esempio di giocattoli di quello che sto cercando di fare:heatmap con dataset dispersione python matplotlib

import numpy as np 
from matplotlib.pyplot import* 
x = [1,2,3,4,5] 
y = [1,2,3,4,5] 
heatmap, xedges, yedges = np.histogram2d(x, y, bins=50) 
extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]] 
imshow(heatmap, extent = extent) 

devo aspettarmi una delle aree più calde '' ad essere insieme y = x, ma invece si fanno vedere lungo y = -x + 5 vale a dire il heatmap legge una lista nella direzione opposta. Non sono sicuro del motivo per cui questo sta accadendo. Eventuali suggerimenti?

Grazie

risposta

3

Prova il parametro origin=lowerimshow. Di default imposta l'elemento (0,0) dell'array nell'angolo in alto a sinistra.

Ad esempio:

import numpy as np 
import matplotlib.pyplot as plt 
x = [1,2,3,4,5,5] 
y = [1,2,3,4,5,5] 
heatmap, xedges, yedges = np.histogram2d(x, y, bins=10) 
extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]] 
fig = plt.figure() 
ax1 = fig.add_subplot(211) 
ax1.imshow(heatmap, extent = extent) 
ax1.set_title("imshow Default"); 
ax2 = fig.add_subplot(212) 
ax2.imshow(heatmap, extent = extent,origin='lower') 
ax2.set_title("imshow origin='lower'"); 

fig.savefig('heatmap.png') 

produce:

enter image description here

+0

funziona alla grande, grazie! – msohail

0

Troppo mantenere l'aspetto della mappa termica in linea con quello che si vede nella dispersione, in realtà l'uso:

ax2.imshow(heatmap.T, extent = extent,origin='lower')