Python 如何在Matplotlib中填充区域

Python 如何在Matplotlib中填充区域,python,numpy,matplotlib,math,plot,Python,Numpy,Matplotlib,Math,Plot,我需要填充y1和y之间的区域,但我不知道如何将区域限制在y2以下 import numpy as np import matplotlib.pyplot as plt y = lambda z: (4 * z - z ** 2) ** (1 / 2) y1 = lambda x: (8 * x - x ** 2) ** (1 / 2) y2 = lambda c: c * 3 ** (1 / 2) x = np.linspace(0, 12, 500) z = np.linspace(0, 1

我需要填充y1和y之间的区域,但我不知道如何将区域限制在y2以下

import numpy as np
import matplotlib.pyplot as plt

y = lambda z: (4 * z - z ** 2) ** (1 / 2)
y1 = lambda x: (8 * x - x ** 2) ** (1 / 2)
y2 = lambda c: c * 3 ** (1 / 2)
x = np.linspace(0, 12, 500)
z = np.linspace(0, 12, 500)
c = np.linspace(0, 12, 500)
plt.ylim(0, 4)
plt.xlim(0, 4)

plt.plot(z, y(z), color='blue', label="$y=\\sqrt{4x-x^2}$")
plt.plot(c, y2(c), color='black', label='$y=x\\sqrt{3}$')
plt.plot(x, y1(x), color='red', label='$y=\\sqrt{8x-x^2}$')
plt.plot([0, 4], [0, 0], color='yellow', label='y=0')
plt.grid(True, zorder=5)

plt.fill_between(x, y(z), y1(x), where=(y2(c) >= y1(x)), alpha=0.5)
plt.legend()
plt.show()

是否要在
y1、y2
y
的最小值之间填充

miny = np.minimum(y2(x),y1(x))
plt.fill_between(x, y(x), miny, where=(miny>=y(x)), alpha=0.5)

plt.legend()
plt.show()
输出:


这和你的方法不一样吗?是的,我仍然不知道如何使用填充法。