我试图创建一个面积图,其中填充根据y值变化。使用fill_between
和where
参数基本上可以工作,但留下未填充的区域:
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
在某些方面稍微改善了情况,但在其他方面看起来更混乱:
我已经看过step
参数,但在我看来似乎没有希望。
1条答案
按热度按时间kmpatx3s1#
因为你的要求很简单,最好的方法是决定你的“默认”颜色,并将其用作整个曲线的fill_between,而不指定任何条件。在此之上,你可以为不同的条件添加不同的颜色。比如:
它给出了以下输出: