这可能听起来微不足道,但我无法在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一起使用。提前感谢您提供任何帮助。
答案 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()