首页 > 解决方案 > 填充多条曲线和直线之间的区域

问题描述

我有 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()

结果

标签: pythonnumpymatplotlibmathplot

解决方案


你可以用whereinfill_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()


推荐阅读