times = list(range(len(mintemps)))
colors = [(25, '#FF69B4'), (20, '#F08228'), (15, '#E6AF2D'), (10, '#E6DC32'
    ), (5, '#A0E632'), (0, '#00DC00')]
x = np.linspace(times[0], times[-1], 300)
maxt = np.interp(x, times, maxtemps)
mint = np.interp(x, times, mintemps)
last_level = np.inf
for level, color in colors:
    tmp_min = np.clip(mint, level, last_level)
tmp_max = np.clip(maxt, level, last_level)
pl.fill_between(x, tmp_min, tmp_max, lw=0, color=color)
last_level = level
pl.grid(True)
pl.show()
Matplotlib - grids and plotting color coded y values/data ranges