Хотя другие ответы указывают на проблему, вам может быть интересно узнать, что вы можете регулировать ширину в соответствии с количеством точек данных, как указано ниже, а не указывать ее вручную.
P.S: Формула width = 1.0/(len(bins) + 1)
- лучший выбор , особенно , когда ваши данные находятся в диапазоне от 0 до 1. См. Общую формулу ниже.Постоянная +1
в знаменателе при вычислении ширины является вопросом выбора.Вы также можете выбрать 2, 3 и т. Д., Чтобы уменьшить ширину.
import numpy as np
import matplotlib.pyplot as plt
bins = np.linspace(0, 1, 10)
width = 1.0/(len(bins) + 1)
plt.bar(bins, bins, width=width)
plt.show()

Чтобы сделать это более общим, я пришелс этой формулой.Это будет работать, даже если ваши данные превышают 0 и 1
width = (max(bins) - min(bins)) * 1.0/(len(bins) + 1)