There may be a better way, but here goes:
from matplotlib import pyplot as plt
x = range(10)
y = range(10)
z = [[z] * 10 for z in range(10)]
num_bars = 100 # more bars = smoother gradient
plt.contourf(x, y, z, num_bars)
background_color="w"
plt.fill_between(x, y, y2=max(y), color=background_color)
plt.show()
Shows: