二维直方图与一维直方图的工作原理相同。你定义一些箱子,找出每个箱子里的数据点,然后计算每个箱子里的点数。如果直方图是加权的,则将权重相加,而不是仅仅计算数字。在
举个例子x = [1.6, 2.3, 2.7]
y = [0.7, 1.8, 1.3]
我们要把它们放进有边的箱子里
^{pr2}$
另外,你的体重可能像weights = [0.6, 1, 2]
把情况想象出来sc = plt.scatter(x,y,c=weights, vmin=0)
plt.colorbar(sc)
plt.xticks(bins)
plt.yticks(bins)
plt.grid()
plt.show()
现在我们可以用肉眼观察柱状图:
在binx=1..2,y=0..1中有一个点。此点的权重为0.6,因此此bin的值将为0.6。
在binx=2..3,y=1..2中有两个点。它们有重量1和{}。因此,该bin的值是1+2=3。在
其他的箱子都是空的。总的来说,你的直方图看起来像[[ 0.0, 0.6, 0.0 ]
[ 0.0, 0.0, 3.0 ]
[ 0.0, 0.0, 0.0 ]]
这确实是我们让纽比做历史记录时得到的。在values, _, _ = np.histogram2d(x,y, bins=bins, weights=weights)
print(values.T)
注意.T转置;这就是句子“x中的值沿着第一个维度被组织起来,y中的值沿着第二个维度被组织起来”想要告诉你的。在
plt.hist2d是numpy.histogram2d的包装器,它将把这个数组打印成图像h,_, _, image = plt.hist2d(x,y,bins=bins, weights=weights)
plt.colorbar(image)
plt.show()
其中值以颜色编码。在