在Matplotlib中创建堆叠直方图时,我注意到bin宽度缩小了。在这个简单的例子中:
import numpy as np
import matplotlib
import matplotlib.pylab as plt
#Create histograms and plots
fig = plt.figure()
gs = matplotlib.gridspec.GridSpec(1, 2)
h1 = fig.add_subplot(gs[0])
h2 = fig.add_subplot(gs[1])
x = np.random.normal(0, 5, 500)
y = np.random.normal(0, 20, 500)
bins = np.arange(-60,60, 5)
h1.hist([x, y], bins=bins, stacked=True)
h2.hist(x, bins=bins, alpha=1)
h2.hist(y, bins=bins, alpha=0.5)
plt.tight_layout()
plt.show()
filename = 'sample.pdf'
plt.savefig(filename)
我得到以下输出:
请注意,左侧的直方图在每个箱子之间都有间距,即使左右两侧的直方图都使用相同的箱子。
有没有办法纠正这种行为?我希望左边的直方图使用完整的bin宽度,以便相邻的bin共享边缘。
答案 0 :(得分:0)
如果ax.hist
- 调用的第一个参数是列表列表(或2d numpy-array或两者的组合),它将自动使bin变小。 rwidth
调用的ax.hist
参数是确定bin宽度的参数。将其设置为1将执行您希望它执行的操作:
h1.hist([x, y], bins=bins, stacked=True, rwidth=1)