Похоже, вы хотите axvspan
, а не одна из заливок между функциями. Различия в том, что axvspan
(и axhspan
) заполнит весь экстент y (или x) графика независимо от того, как вы увеличиваете масштаб.
Например, давайте используем, 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
, y-экстенты прямоугольника по умолчанию равны 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
параметр (и этот ответ )