Це схоже на ваше бажання 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
параметр (і на цю відповідь )