我正在练习fill_between matplotlib函数。
我想要做的是填充y = 0和y的正值之间的区域,并让y = 0和y的负值之间的区域未填充。
类似的东西:
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y = [0,2,-3,4,-5]
ypos = [i for i in y if i>0]
plt.plot(x,y)
plt.fill_between(x,0,ypos)
plt.show()
它给出的错误是ValueError:参数尺寸不兼容。我已经检查了一些可能的解决方案,但我无法使其正常工作。
答案 0 :(得分:3)
您可以使用
where=np.array(y)>0
限制填充区域的绘制位置并使用
interpolate=True
让fill_between
找到交叉点:
import numpy as np
import matplotlib.pyplot as plt
x = np.array([1,2,3,4,5])
y = np.array([0,2,-3,4,-5])
plt.plot(x,y)
plt.fill_between(x, 0, y, where=y>0, interpolate=True)
plt.show()
产量