Проблема в том, что plt.hist
алгоритм объединения подходит для действительных значений, а не для целых (дискретных) значений.
Пояснение
Давайте посмотрим на бины, предложенные matplotlib:
n, bins, _ = plt.hist(x + y, bb, color="green", edgecolor='black', linewidth=1.2, label="Uniform Dist", rwidth=.75)
bins
:
array([ 2. , 2.83333333, 3.66666667, 4.5 , 5.33333333,
6.16666667, 7. , 7.83333333, 8.66666667, 9.5 ,
10.33333333, 11.16666667, 12. ])
Шестой столбец имеет диапазон [bins[5], bins[6])
, равный [6.17, 7.00)
- обратите внимание, что этополуоткрытый. Поэтому нет целое число принадлежит этому диапазону.
Решение
Решение состоит в том, чтобы вручную задать ячейки:
values = x + y
bins = np.arange(np.min(values) - .5, np.max(values) + 0.5, 1)
plt.hist(values, bins, color="green", edgecolor='black', linewidth=1.2, label="Uniform Dist", rwidth=.75)
bins
равноarray([0.5, 1.5, 2.5, 3.5, 4.5, 5.5, ..., 10.5, 11.5, 12.5])
.