Я пытаюсь закрасить пространство между линией графика и осью X. Цвет должен основываться на значении соответствующей точки на линии. Вроде как первый график: (https://matplotlib.org/3.1.1/gallery/lines_bars_and_markers/fill_between_demo.html)
Если он выше 100, он должен быть красным, если он меньше 100, он должен быть зеленым. График яищу должен быть чередующийся красно-зеленый.
Вот что у меня на данный момент:
import matplotlib.pyplot as plt
lenght = 120
y = [107, 108, 105, 109, 107, 106, 107, 109, 106, 106, 94, 93, 94, 93, 93, 94, 95, 106, 108, 109, 107, 107, 106, 108, 105, 108, 107, 106, 107, 97, 93, 96, 94, 96, 95, 94, 104, 107, 106, 108, 107, 107, 106, 107, 105, 107, 108, 105, 107, 100, 93, 94, 93, 95, 104, 107, 107, 108, 108, 107, 107, 107, 107, 104, 94, 96, 95, 96, 94, 95, 94, 100, 107, 107, 105, 107, 107, 109, 107, 108, 107, 105, 108, 108, 106, 97, 94, 94, 94, 94, 95, 94, 94, 94, 96, 108, 108, 107, 106, 107, 107, 108, 107, 106, 95, 95, 95, 94, 94, 96, 105, 108, 107, 106, 106, 108, 107, 108, 106, 107]
x = [x for x in range(lenght)]
lvl = lenght * [100]
fig, ax = plt.subplots()
ax.plot(x, y, color="black")
ax.fill_between(x, 0, y, where=y>lvl, facecolor='red', interpolate=True)
ax.fill_between(x, 0, y, where=y<=lvl, facecolor='green', interpolate=True)
plt.show()
Это приводит к следующему графику:
Область, в которой значение меньше 100, должна быть зеленой. Но пространство между линией и осью x всегда является цветом, основанным на первом значении в массиве (в данном примере, красном). Какя могу это исправить?