填充多条曲线和线之间的区域

时间:2020-03-20 14:33:36

标签: python numpy matplotlib math plot

我有3条曲线,我想填充它们之间的区域。我应该怎么做?

这是我到目前为止所拥有的:

import numpy as np
import matplotlib.pyplot as plt
y = lambda z: -(z ** 2)
y1 = lambda x: x ** (1 / 3)
x = np.linspace(0, 2, 100)
z = np.linspace(0, 2, 100)
plt.plot(z, y(z), color='blue', label="y=-(x^2)")
plt.ylim(-2, 2)
plt.xlim(0, 2)
plt.plot(x, y1(x), color='red', label='y=x^(1/3)')
plt.plot([1, 1, 1], [0, -2, 2], color='black', label='x=1')
plt.grid(True, zorder=5)
plt.legend()
k = np.arange(0,2)
f = [0,-0.2]
p = [0,0.2]
plt.fill_between(k,f,p,interpolate=True)
plt.show()

result

1 个答案:

答案 0 :(得分:1)

您可以使用where中的fill_between来处理x = 1行。见下文:

import numpy as np
import matplotlib.pyplot as plt

y = lambda z: -(z ** 2)
y1 = lambda x: x ** (1 / 3)
x = np.linspace(0, 2, 100)
z = np.linspace(0, 2, 100)

plt.ylim(-2, 2)
plt.xlim(0, 2)
#plt.grid(True, zorder=5)

plt.plot(z, y(z), color='blue', label="y=-(x^2)")
plt.plot(x, y1(x), color='red', label='y=x^(1/3)')
plt.plot([1, 1, 1], [0, -2, 2], color='black', label='x=1')

plt.fill_between(x, y(z), y1(x), where=x<=1)

plt.legend()
plt.show()