Python 两个函数之间的填充区域
Python 两个函数之间的填充区域,python,matplotlib,plot,Python,Matplotlib,Plot,如何使用填充线填充两条线之间的区域?换句话说,我如何填充绿色和蓝色线条之间的小花瓣?您可以使用fill\u-between()并在满足条件时在两条线条之间填充 (我对你的代码做了一点修改,因为你写代码的方式,我必须找到f1的反函数) @用户5061在代码上是正确的,反函数在那里 import matplotlib.pyplot as plt import numpy as np def domain(): x = np.arange(0, 2, 0.001) f = lam
如何使用填充线填充两条线之间的区域?换句话说,我如何填充绿色和蓝色线条之间的小花瓣?您可以使用
fill\u-between()
并在满足条件时在两条线条之间填充
(我对你的代码做了一点修改,因为你写代码的方式,我必须找到f1
的反函数)
@用户5061在代码上是正确的,反函数在那里
import matplotlib.pyplot as plt
import numpy as np
def domain():
x = np.arange(0, 2, 0.001)
f = lambda x: x**0.5
g = lambda x: x**2
plt.plot(x, f(x), label = '$y = \sqrt{2x - x^2}$')
plt.plot(x, g(x), label = '$x = \sqrt{2y - y^2}$')
plt.xlabel('X')
plt.ylabel('Y')
plt.legend(loc='best')
plt.fill_between(x, f(x), g(x),where=f(x) > g(x))
axes = plt.gca()
axes.set_xlim([0, 2])
axes.set_ylim([0, 2])
plt.show()
domain()
不取正分量1+(1-x*x)**0.5
,因为它不会影响交叉点
我知道你用f2中的x表示y,但是你有两个可能的表达式,不是吗?根据您选择的带+?
1+(1-x*x)**0.5始终是>1
表示0的表达式
import matplotlib.pyplot as plt
import numpy as np
def domain():
x = np.arange(0, 2, 0.001)
f = lambda x: x**0.5
g = lambda x: x**2
plt.plot(x, f(x), label = '$y = \sqrt{2x - x^2}$')
plt.plot(x, g(x), label = '$x = \sqrt{2y - y^2}$')
plt.xlabel('X')
plt.ylabel('Y')
plt.legend(loc='best')
plt.fill_between(x, f(x), g(x),where=f(x) > g(x))
axes = plt.gca()
axes.set_xlim([0, 2])
axes.set_ylim([0, 2])
plt.show()
domain()
import matplotlib.pyplot as plt
import numpy as np
def domain():
x = np.arange(0, 10, 0.001)
f1 = lambda x: (2*x - x**2)**0.5
f2 = lambda x: 1 - (1-x*x)**0.5 # other part is f2 = lambda x: 1 + (1-x*x)**0.5
plt.plot(x, f1(x), label = '$y = \sqrt{2x - x^2}$')
plt.plot(f1(x), x, label = '$x = \sqrt{2y - y^2}$')
plt.fill_between(x, f1(x), f2(x), where=f1(x)>=f2(x), interpolate=True, color='yellow')
plt.xlabel('X')
plt.ylabel('Y')
plt.legend(loc='best')
axes = plt.gca()
axes.set_xlim([0, 5])
axes.set_ylim([0, 5])
plt.show()
domain()