我想绘制几个直方图,类似于绘制these条形图的方式。我已经尝试使用hist返回的数组,但似乎返回了bin边缘,所以我不能在bar中使用它们。有人有什么建议吗?
hist
bar
gz5pxeao1#
如果你使用np.histogram来预先计算直方图,你会得到hist数组和bin edges。plt.bar期望bin中心,因此通过以下公式计算它们:
np.histogram
plt.bar
xs = (bins[:-1] + bins[1:])/2
要修改Matplotlib示例:
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') nbins = 50 for c, z in zip(['r', 'g', 'b', 'y'], [30, 20, 10, 0]): ys = np.random.normal(loc=10, scale=10, size=2000) hist, bins = np.histogram(ys, bins=nbins) xs = (bins[:-1] + bins[1:])/2 ax.bar(xs, hist, zs=z, zdir='y', color=c, ec=c, alpha=0.8) ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') plt.show()
1条答案
按热度按时间gz5pxeao1#
如果你使用
np.histogram
来预先计算直方图,你会得到hist
数组和bin edges。plt.bar
期望bin中心,因此通过以下公式计算它们:要修改Matplotlib示例: