为什么Matplotlib在这种情况下绘制错误的热图?

时间:2016-06-16 11:38:47

标签: numpy histogram2d

" M"是https://www.dropbox.com/s/vua4nakd8sz3ocy/data.py?dl=0

中定义的GPS坐标数组

我可以使用matplotlib函数

hist2d(zip(*m)[0],zip(*m)[1], bins=60, cmap='jet', normed=True)

生成正确的密度热图。

但是,如果我这样使用:

x,y = zip(*m)[:2]
heatmap, xedges, yedges = np.histogram2d(x,y,bins=50)
extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]]
clf()
scatter(x,y,c='k')
imshow(heatmap, extent=extent, cmap='jet')

它会产生明显错误的热图。为什么会这样?

wrong.img

黑点是GPS点。

1 个答案:

答案 0 :(得分:0)

我明白了! numpy中的histogram2d使用横坐标和纵坐标系统,以便与numpy中的histogramdd一致。所以正确的应该是:

x,y = zip(*m)[:2]
heatmap, xedges, yedges = np.histogram2d(y,x,bins=40) 
extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]]
scatter(x,y,c='k')
imshow(heatmap[::-1], extent=extent,cmap='jet',interpolation='nearest')

无论如何,不​​建议这样做。