填充y = 0和y的正值

时间:2015-06-10 19:48:21

标签: python python-3.x matplotlib

我正在练习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:参数尺寸不兼容。我已经检查了一些可能的解决方案,但我无法使其正常工作。

1 个答案:

答案 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()

产量

enter image description here