在this这个问题上有一个相当好的答案,下面借用了主要思想,但是我用了对imshow的调用而不是{}的调用,因为我认为它看起来更流畅。我借用了关键元素,即在整个图像上放置渐变,然后使用fill_between在数据上方“擦除”。在import numpy as np
import matplotlib.pyplot as plt
import datetime
import matplotlib.dates as mdates
# Fake data using dates as requested
xdata = np.array([datetime.datetime.today()+
datetime.timedelta(days=1)*i for i in range(15)])
ydata = np.cumsum(np.random.uniform(size=len(xdata)))
xlims = mdates.date2num([xdata[0], xdata[-1]])
# Construct an image linearly increasing in y
xv, yv = np.meshgrid(np.linspace(0,1,50), np.linspace(0,1,50))
zv = yv
# Draw the image over the whole plot area
fig, ax = plt.subplots(figsize=(5,3))
ax.imshow(zv, cmap='YlGnBu_r', origin='lower',
extent=[xlims[0], xlims[1], ydata.