matplotlib fill_between 与离散 x 值和其中参数产生间隙

时间:2021-04-08 00:11:36

标签: python matplotlib

我正在尝试创建一个区域图,其中填充根据 y 值发生变化。使用 fill_betweenwhere 参数大多有效,但会留下未填充的区域:

import numpy as np
import matplotlib.pyplot as plt

x=np.arange(1,10)
y=np.array([1,4,6,8,4,7,5,6,0])

plt.plot(x, y, color='black')
plt.fill_between(x, y, where=y < 5, color='red')
plt.fill_between(x, y, where=y >= 5, color='blue')

plt.show()

Run on trinket.io

产生这个结果:Plot without interpolation

如何去除图表下方的任何白色区域?对于当前的“中间”区域应该如何着色,我没有严格的要求。要么 - 要么两者,在中点会面 - 都可以。

添加 interpolate=True 在某些方面稍微改善了情况,但在其他方面看起来更混乱:Plot with interpolation

我已经查看了 step 参数,但在我看来似乎不太乐观。

1 个答案:

答案 0 :(得分:0)

由于您的要求很简单,因此最好的方法可能是确定您的“默认”颜色并将其用作整个曲线的 fill_between 而不指定任何条件。最重要的是,您可以为不同的条件添加不同的颜色。类似的东西:

fig, ax = plt.subplots()

ax.fill_between(x, y, color="blue")
ax.fill_between(x, y, where=y<=5, color="red")

给出以下输出:

enter image description here