Ответ 1
Немного простая алгебра поможет исправить пределы:
import matplotlib.pyplot as plt
import math
x = [1,2,3,4,5]
y = [1000, 1002, 1001, 1003, 1005]
low = min(y)
high = max(y)
plt.ylim([math.ceil(low-0.5*(high-low)), math.ceil(high+0.5*(high-low))])
plt.bar(x,y)
plt.show()
Таким образом, вы можете найти разницу между вашими значениями y и использовать их для установки шкалы вдоль оси y. Я использовал math.ceil (в отличие от math.floor), чтобы получить указанные вами значения и обеспечить целые числа.
Что касается осевого перерыва, я бы предложил посмотреть на этот пример.