Python Matplotlib(hist2D)中的二维直方图是如何工作的?

Python Matplotlib(hist2D)中的二维直方图是如何工作的?,python,matplotlib,Python,Matplotlib,在以下文件中: x和y以及权重是类似于数组的,形状为(n,) 根据文件,输出之一是: h:2D阵列 样本x和y的二维直方图。价值观 x中的值沿第一个维度进行了历史编程,y中的值为 沿第二维度进行了历史记录 如何创建此二维阵列?想象 x = np.arange(1,10) y = np.arange(1,10) weights = x * y 二维阵列是如何从中创建的 我正在重新绘制之前提出的问题(它不是我的)。2D历史编程与1D历史编程的工作原理相同。定义一些存储箱,找出每个数据点所在的存储箱

在以下文件中:

x和y以及权重是类似于数组的,形状为(n,)

根据文件,输出之一是:

h:2D阵列

样本x和y的二维直方图。价值观 x中的值沿第一个维度进行了历史编程,y中的值为 沿第二维度进行了历史记录

如何创建此二维阵列?想象

x = np.arange(1,10)
y = np.arange(1,10)
weights = x * y
二维阵列是如何从中创建的


我正在重新绘制之前提出的问题(它不是我的)。

2D历史编程与1D历史编程的工作原理相同。定义一些存储箱,找出每个数据点所在的存储箱,然后计算每个存储箱中的点数。如果直方图是加权的,则将权重相加,而不是仅仅计算数字

例如

x = [1.6, 2.3, 2.7]
y = [0.7, 1.8, 1.3]
我们想把它们放进有边缘的箱子里

bins = [0,1,2,3] 
此外,您可能有如下重量:

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

现在我们可以用肉眼观察直方图:

在箱子x=1..2,y=0..1中有一个点。该点的权重为
0.6
,因此该箱子的值为
0.6

在箱子x=2..3,y=1..2中有两点。它们具有权重
1
2
。因此,该箱子的值为
1+2=3

其他所有的垃圾箱都是空的。总的来说,你的直方图看起来像

[[ 0.0, 0.6, 0.0 ]
 [ 0.0, 0.0, 3.0 ]
 [ 0.0, 0.0, 0.0 ]]
这确实是我们让numpy进行历史编程时得到的结果

values, _, _ = np.histogram2d(x,y, bins=bins, weights=weights)
print(values.T)
注意
.T
转置;这就是句子“x中的值沿第一维度进行历史记录,y中的值沿第二维度进行历史记录”想要告诉你的

plt.hist2d
numpy.historogram2d
的包装器,然后将此数组绘制为图像

h,_, _, image = plt.hist2d(x,y,bins=bins, weights=weights)
plt.colorbar(image)
plt.show()


其中,值以颜色编码。

2D组织编程与1D组织编程的工作原理相同。定义一些存储箱,找出每个数据点所在的存储箱,然后计算每个存储箱中的点数。如果直方图是加权的,则将权重相加,而不是仅仅计算数字

例如

x = [1.6, 2.3, 2.7]
y = [0.7, 1.8, 1.3]
我们想把它们放进有边缘的箱子里

bins = [0,1,2,3] 
此外,您可能有如下重量:

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

现在我们可以用肉眼观察直方图:

在箱子x=1..2,y=0..1中有一个点。该点的权重为
0.6
,因此该箱子的值为
0.6

在箱子x=2..3,y=1..2中有两点。它们具有权重
1
2
。因此,该箱子的值为
1+2=3

其他所有的垃圾箱都是空的。总的来说,你的直方图看起来像

[[ 0.0, 0.6, 0.0 ]
 [ 0.0, 0.0, 3.0 ]
 [ 0.0, 0.0, 0.0 ]]
这确实是我们让numpy进行历史编程时得到的结果

values, _, _ = np.histogram2d(x,y, bins=bins, weights=weights)
print(values.T)
注意
.T
转置;这就是句子“x中的值沿第一维度进行历史记录,y中的值沿第二维度进行历史记录”想要告诉你的

plt.hist2d
numpy.historogram2d
的包装器,然后将此数组绘制为图像

h,_, _, image = plt.hist2d(x,y,bins=bins, weights=weights)
plt.colorbar(image)
plt.show()


这些值是用颜色编码的。

你是在问matplotlib本身是如何创建这个2D数组的?@DavidG-是的,我不确定它是否有意义。也许我误解了权重的作用。如果您愿意,可以按照源代码进行操作:-)matplotlib hist2d调用,它本身调用@DavidG,谢谢。我必须!;-)。最好也是唯一的办法。你是在问matplotlib本身是如何创建这个2D数组的吗?@DavidG-是的,我不确定它是否有意义。也许我误解了权重的作用。如果您愿意,可以按照源代码进行操作:-)matplotlib hist2d调用,它本身调用@DavidG,谢谢。我必须!;-)。最好也是唯一的办法。