2012-01-06 18 views
5

Estoy escribiendo un script para hacer un mapa de calor para los datos de dispersión en dos dimensiones. El siguiente es un ejemplo de juguete de lo que estoy tratando de hacer:heatmap usando el dataset de dispersión 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) 

que deben esperar una de las zonas más calientes '' sean lo largo de y = x, sino que aparecen a lo largo de y = -x + 5 es decir, el heatmap lee una lista en la dirección inversa. No estoy seguro de por qué ocurre esto. ¿Alguna sugerencia?

Gracias

Respuesta

3

Prueba el parámetro imshoworigin=lower. Por defecto, establece el elemento (0,0) de la matriz en la esquina superior izquierda.

Por ejemplo:

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

funciona genial, gracias! – msohail

0

Demasiado mantener el aspecto del mapa de calor consistente con lo que se ve en la dispersión, en realidad utilizan:

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