2012-01-06 2 views
5

Я пишу сценарий для создания карты тепла для данных рассеяния на двух измерениях. Ниже игрушечный пример того, что я пытаюсь сделать:heatmap using spread dataset 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) 

следует ожидать, что «теплые» области, чтобы быть вместе у = х, но вместо этого они появляются вместе у = -х + 5 т.е. Heatmap читает один список в обратном направлении. Я не знаю, почему это происходит. Какие-либо предложения?

Благодаря

ответ

3

Попробуйте параметр origin=lowerimshow. По умолчанию он устанавливает элемент (0,0) массива в верхнем левом углу.

Например:

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

Производит:

enter image description here

+0

отлично работает, спасибо! – msohail

0

Слишком держать внешний вид тепловой карты в соответствии с того, что вы видите в разброс, на самом деле используют:

ax2.imshow(heatmap.T, extent = extent,origin='lower') 
Смежные вопросы