Заполните область между несколькими кривыми и линиями - PullRequest
2 голосов
/ 20 марта 2020

У меня есть 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 Ответ

1 голос
/ 20 марта 2020

Вы можете использовать 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()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...