Sembra che tu voglia axvspan, piuttosto che uno dei riempimenti tra le funzioni. La differenza è che axvspan(e axhspan) riempirà l'intera estensione y (o x) del grafico indipendentemente da come si ingrandisce.
Ad esempio, usiamo axvspanper evidenziare la regione x tra 8 e 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()

Potresti usare fill_betweenxper farlo, ma le estensioni (sia x che y) del rettangolo sarebbero in coordinate di dati . Con axvspan, le estensioni y del rettangolo sono impostate di default su 0 e 1 e sono in coordinate degli assi (in altre parole, percentuali dell'altezza del grafico).
Per illustrare ciò, facciamo in modo che il rettangolo si estenda dal 10% al 90% dell'altezza (invece di occupare l'intera estensione). Prova a eseguire lo zoom o la panoramica e nota che le estensioni y dicono fisse nello spazio di visualizzazione, mentre le estensioni x si spostano con lo zoom / panoramica:
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_betweenper linee verticali più "sinuose", danno un'occhiata al filetransform