A good way to do this a way that fit our datas is to use the fill_between function from pyplot.
To fill the desired area under the curve, i recommend using the where argument that provide a filter that fit your data:
import numpy as np
from matplotlib import pyplot as plt
def f(t):
return t * t
t = np.arange(-4,4,1/40)
#Print the curve
plt.plot(t,f(t))
#Fill under the curve
plt.fill_between(
x= t,
y1= f(t),
where= (-1 < t)&(t < 1),
color= "b",
alpha= 0.2)
plt.show()
You can play around with alpha (opacity) et color to make it look better.
Here is the desired result :
![enter image description here]()
The document of fill_between is available here :
https://matplotlib.org/3.5.1/api/_as_gen/matplotlib.pyplot.fill_between.html