2012-01-06 13 views
5

Piszę skrypt, aby utworzyć mapę cieplną dla danych rozproszonych na dwóch wymiarach. Poniżej znajduje się przykład zabawki, co staram się robić:Mapa termiczna z użyciem zestawu danych rozproszonych 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) 

powinienem spodziewać się, że „” najcieplejsze obszary się wzdłuż y = x, ale zamiast tego pojawiają się wzdłuż y = -x + 5 czyli heatmap czyta jedną listę w odwrotnym kierunku. Nie jestem pewien, dlaczego tak się dzieje. Jakieś sugestie?

Dzięki

Odpowiedz

3

Spróbuj parametr origin=lowerimshow. Domyślnie ustawia element (0,0) tablicy w lewym górnym rogu.

Na przykład:

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

Produkuje:

enter image description here

+0

działa świetnie, dzięki! – msohail

0

Zbyt zachować wygląd mapę cieplną spójny z tym, co widać na rozproszenie, faktycznie używać:

ax2.imshow(heatmap.T, extent = extent,origin='lower') 
Powiązane problemy