Це схоже на ваше бажання axvspan, а не на заповнення між функціями. Відмінність полягає в тому, що axvspan(і axhspan) заповнить весь розмір у (або х) ділянки незалежно від того, як ви збільшуєте масштаб.
Наприклад, давайте використаємо, axvspanщоб виділити область x між 8 і 14:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(range(20))
ax.axvspan(8, 14, alpha=0.5, color='red')
plt.show()

Ви можете використовувати fill_betweenxце для цього, але екстенси (як x, так і y) прямокутника будуть у координатах даних . У axvspan, екстенси у прямокутника за замовчуванням дорівнюють 0 і 1 і знаходяться в координатах осей (іншими словами, у відсотках від висоти графіку).
Щоб проілюструвати це, давайте зробимо, щоб прямокутник простягався від 10% до 90% висоти (замість того, щоб займати повний розмір). Спробуйте змінити масштаб або панорамування і зауважте, що екстенти y говорять, що зафіксовано в просторі дисплея, тоді як x-екстенти рухаються зі збільшенням / панорами:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(range(20))
ax.axvspan(8, 14, ymin=0.1, ymax=0.9, alpha=0.5, color='red')
plt.show()

fill_betweenдля більш «хитких» вертикальних ліній, подивіться наtransformпараметр (і на цю відповідь )