如何在hist2d中设置bin内容(matplotlib)

时间:2014-06-09 13:59:31

标签: python matplotlib histogram

我试图在(x,y)中绘制z binned的值。这看起来像matplotlib中的hist2d,但bin内容由另一个数组定义,而不是表示计数的数量。有没有办法在hist2d中设置bin内容?

2 个答案:

答案 0 :(得分:3)

不,没有办法在hist2d中设置bin内容,但有两种备选方案。

1)您可以使用bar3d手动定义每个bin的边界,但它并不总能很好地呈现。

hist,xbinedges,ybinedges = np.histogram2d(x,y,bins=bins,range=range)
BinlowEdgex, BinlowEdgey = np.meshgrid(xbinedges[:-1], ybinedges[:-1])
xbinwidth = ((range[0][1]-range[0][0])/(bins[0]))
ybinwidth = ((range[1][1]-range[1][0])/(bins[1]))
ax.bar3d(BinlowEdgex.flatten(), BinlowEdgey.flatten(), np.zeros(bins[0]*bins[1]), xbinwidth*np.ones(bins[0]*bins[1]), ybinwidth*np.ones(bins[0]*bins[1]), zvalues.flatten())

2)你可以放弃3d直方图的概念,并使用颜色作为z值。

ax.imshow(zvalues.T,extent=np.array(range).flatten(),origin='lower',interpolation = 'nearest')

答案 1 :(得分:-3)

您想设置每个垃圾箱中的元素数量吗?我认为这是一个条形图而不是直方图。因此,只需使用ax.bar代替。

编辑 tcaswell的好点,对于多维图像,等效值为imshow而不是bar