Как заполнить область между двумя наборами данных, соединенных линией? - PullRequest
1 голос
/ 17 марта 2019

У меня есть два набора данных, которые показаны как линии на графике. Как заполнить область цвета между ними?

import matplotlib.pyplot as plt
curve1, = plt.plot(xdata, ydata)
curve2, = plt.plot(xdata, ydata)

Я пытался:

x = np.arange(0,12,0.01)
plt.fill_between(x, curve1, curve2, color='yellow')

Спасибо

1 Ответ

2 голосов
/ 17 марта 2019

Вы должны использовать ydata в качестве аргументов для fill_between, а не кривых.

Либо используйте ydata напрямую, либо получите их от вашегоcurve1/2 объектов типа ydata=curve1.get_ydata().

Вот пример, адаптированный из документов :

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-5, 5, 0.01)
y1 = -5*x*x + x + 10
y2 = 5*x*x + x

c1, = plt.plot(x, y1, color='black')
c2, = plt.plot(x, y2, color='black')

# If you want/have to get the data form the plots
# x = c1.get_xdata()
# y1 = c1.get_ydata()
# y2 = c2.get_ydata()

plt.fill_between(x, y1, y2, where=y2 >y1, facecolor='yellow', alpha=0.5)
plt.fill_between(x, y1, y2, where=y2 <=y1, facecolor='red', alpha=0.5)
plt.title('Fill Between')

plt.show()

В итоге вы получите:

enter image description here

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