请详细解释Python中的2D直方图。

20

我试图理解2D直方图的价值。

我有两个相同长度的NumPy数组X和Y(每个数组中都是浮点数)。

例如,X的前10个值为:[88, 193, 60, 98, 78, 100, 75, 76, 130]

而Y为:[18. , 9. , 36.1, 18.5, 34.3, 32.9, 32.2, 22., 15.]

当我使用:

import matplotlib.pyplot as plt

plt.hist2d(X,Y, bins=(10,20)) 

我得到了一个二维直方图。

但是它是什么意思呢?

一维直方图只是简单地显示每个条目的数量。

请解释一下二维直方图的含义。

先行谢过!

1个回答

32
假设您有一个一维数组,您在x轴上绘制其值的位置,它们非常密集,以至于无法确定空间分布。您可以使用一维直方图来显示沿x轴的盒子计数的分布情况。问题解决了。
然后,您有两个一维数组,即(x,y)坐标中的2D点列表。您在x-y平面上绘制它们的位置,再次它们非常密集且彼此重叠。您想通过平面中的箱子计数来更好地查看分布情况,因此尝试了二维图表。问题解决了。
这是一个例子。
import numpy as np
import matplotlib.pyplot as plt

%matplotlib inline

# prepare 2D random dots centered at (0, 0)
n = 100000
x = np.random.randn(n)
y = x + np.random.randn(n)

# plot data
fig1 = plt.figure()
plt.plot(x,y,'.r')
plt.xlabel('x')
plt.ylabel('y')

提供

enter image description here

# plot 2D histogram using pcolor
fig2 = plt.figure()
plt.hist2d(x, y, bins=100)
plt.xlabel('x')
plt.ylabel('y')
cbar = plt.colorbar()
cbar.ax.set_ylabel('Counts')

提供

enter image description here


嗨Neo,感谢你的回答 - 你的意思是说,带有bin映射的2D直方图只是告诉我每个2D bin中有多少点吗? 例如,如果我在2D直方图的中间看到一个bin,它的值就是在此bin范围内的点的计数? - Steve
确切地说,就像我更新的答案中所示,第二个图中小方框的计数以热力图的方式着色。希望能有所帮助。 - Neo X
我的荣幸 : ) - Neo X

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接