PYTHON中3x3阵列的2D直方图

时间:2013-07-11 14:25:05

标签: python-2.7 numpy histogram

这可能听起来微不足道,但我无法在PYTHON中找到解决方案。在ROOT或MATLAB中没问题。

所以,我有一个3x3数组,我希望数组中的每个元素代表一个bin的高度(频率)。我应该有一个有9个箱子的直方图。这是我一直在尝试的一个例子。

import numpy as np
import matplotlib.pyplot as plt

H = np.array([[21,33,6],[25,20,2],[80,40,0]])

hist, bin = np.histogramdd(H, bins=3)

center = 0.5*(bin[:-1] + bin[1:])

plt.bar(center, hist)
plt.show()

我尝试过histogram2D,我找不到任何让它与PYTHON一起使用。提前感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:1)

如果我没有记错,那不应该只是:

H=H.reshape(-1)
plt.bar(np.arange(H.shape[0]),H)

您也可以进行3D直方图:

extent = [0,2,0,2]
plt.imshow(H, extent=extent, interpolation='nearest')
plt.colorbar()
plt.show()

3D条形直方图:

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
for z,height in enumerate(H):
    cs = [c] * len(xs)
    cs[0] = 'c'
    ax.bar(np.arange(3), height, zs=z, zdir='y', color=cs, alpha=0.8)

ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')

plt.show()

以上应该可行,我此刻没有笔记本电脑。可以找到更多示例here。可以找到3D栏的一个很好的例子here