По умолчанию matplotlib делит диапазон ввода на 10 бинов одинакового размера. Все ячейки охватывают полуоткрытый интервал [x1,x2)
, но крайняя правая ячейка включает конец диапазона. Ваш диапазон - [1,6]
, поэтому ваши ячейки - [1,1.5)
, [1.5,2)
, ..., [5.5,6]
, поэтому все целые числа попадают в первое, третье и т.д. c. Ячейки с нечетными номерами, но шестерки попадают в десятую (четную) ячейку.
Чтобы исправить макет, укажите ячейки:
# This will give you a slightly different layout with only 6 bars
plt.hist(results, bins=die + [7])
# This will simulate your original plot more closely, with empty bins in between
plt.hist(results, bins=np.arange(2, 14)/2)
Последний бит генерирует числовую последовательность 2,3,...,13
, а затем делит каждое число на 2, что дает 1, 1.5, ..., 6.5
, так что последняя ячейка занимает [6,6.5]
.