Мне нужно построить линейный график. Я хочу построить все части линейного графика, которые ниже нуля синего цвета, а все части выше красного.
Вот что мне удалось до сих пор:
import numpy as np
import xarray as xr
import matplotlib.pyplot as plt
x = np.linspace(0, 1, 40)
y = np.random.random(len(x))-0.5
da = xr.DataArray(y, dims=('x',), coords={'x':x})
fig = plt.figure(figsize=(12,6))
ax = fig.add_subplot(1, 1, 1)
da.plot(ax=ax, color='red', linewidth=3)
da.where(y<0).plot(ax=ax, color='blue', linewidth=3)
plt.show()
Вот что я получаю с этим скриптом :
![Picture of what I get. Only line segments that are completely below zero are blue](https://i.stack.imgur.com/zHMLw.png)
Но я хочу, чтобы цвет изменился при пороге 0, как в этом примере (который я изменил, чтобы показать, что Я хочу):
![Picture of what I want. All lines below zero are blue](https://i.stack.imgur.com/p6v8L.png)
Я просмотрел несколько предложений здесь, например вот здесь: График: все цвета больше, чем разные цвета
Но с этим решением я получаю ту же цифру. Кажется, что решение заключается в том, что все их линейные сегменты невероятно короткие, поэтому вы не замечаете, что сегмент, который проходит порог, не меняет цвет на пороге, и только следующий сегмент рисуется в другом цвет.
Есть простой способ сделать это? Или мне нужно вручную разделять отрезки линии, пересекающие порог?
Спасибо