По умолчанию оси автоматически масштабируются до некоторого процента от диапазона данных.
Таким образом, позиции галочек и границы осей абсолютно не коррелированы. Это в основном дает хороший визуальный вид содержимого диаграммы.
Тем не менее, вы можете активировать режим автолимитации округлых чисел,
plt.rcParams['axes.autolimit_mode'] = 'round_numbers'
чтобы ограничения и тики соответствовали:

Здесь вокруг пустых данных создается много пробелов. Вы можете решить установить поля на 0
, чтобы избежать этого
plt.rcParams['axes.autolimit_mode'] = 'round_numbers'
plt.rcParams['axes.xmargin'] = 0
plt.rcParams['axes.ymargin'] = 0

Обратите внимание, что этот режим обычно расширяется до следующего «хорошего числа», которое может быть или не быть желательным. Например. если вы позволите первому значению x быть немного меньше 1, X = [0.99,2,3,4,5]
пределы будут расширены до 0,5

На странице matplotlib имеется также пример .