При визуализации данных часто бывает полезно выделить область между двумя кривыми. Это может помочь подчеркнуть разницу или сходство между двумя наборами данных. В этой статье блога мы рассмотрим несколько методов Python для заполнения между двумя кривыми, сопровождаемые примерами кода. Независимо от того, работаете ли вы с matplotlib или другими библиотеками построения графиков, эти методы позволят вам улучшить визуализацию данных и предоставить ценную информацию.
Метод 1: fill_between() в Matplotlib
Один из наиболее часто используемых методов заполнения между двумя кривыми в Python — использование функции fill_between()
, предоставляемой библиотекой Matplotlib. Этот метод позволяет указать значения x и пределы y для заполняемой области. Вот пример:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2 * np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x, y1, label='Curve 1')
plt.plot(x, y2, label='Curve 2')
plt.fill_between(x, y1, y2, where=(y1 > y2), color='blue', alpha=0.3)
plt.fill_between(x, y1, y2, where=(y1 <= y2), color='red', alpha=0.3)
plt.legend()
plt.show()
Метод 2: lineplot() Seaborn с параметром оттенка
Seaborn — еще одна популярная библиотека построения графиков, которая обеспечивает удобный способ заполнения между двумя кривыми. Используя функцию lineplot()
с параметром hue
, мы можем создать линейный график с заштрихованной областью между кривыми. Вот пример:
import seaborn as sns
import numpy as np
x = np.linspace(0, 2 * np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
data = {'x': x, 'y': np.concatenate([y1, y2]), 'curve': ['Curve 1'] * len(x) + ['Curve 2'] * len(x)}
sns.lineplot(x='x', y='y', hue='curve', data=data, palette=['blue', 'red'], alpha=0.3)
sns.lineplot(x=x, y=y1, color='blue')
sns.lineplot(x=x, y=y2, color='red')
Метод 3: Polygon() и Matplotlib NumPy.
Для более сложных сценариев, когда кривые нерегулярны или пересекаются, мы можем использовать функцию polygon()
из библиотеки NumPy в сочетании с Matplotlib. Этот метод предполагает создание многоугольника, покрывающего область между кривыми. Вот пример:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2 * np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
fig, ax = plt.subplots()
ax.plot(x, y1, color='blue')
ax.plot(x, y2, color='red')
vertices = np.vstack([np.column_stack([x, y1]), np.flipud(np.column_stack([x, y2]))])
ax.fill(vertices[:, 0], vertices[:, 1], alpha=0.3, color='green')
plt.show()
В этой статье мы рассмотрели несколько методов заполнения между двумя кривыми в Python с использованием различных библиотек, таких как Matplotlib и Seaborn. Мы рассмотрели функцию fill_between()
, lineplot()
с параметром hue
и комбинацию polygon()
NumPy и Matplotlib. Включив эти методы в свои проекты визуализации данных, вы сможете эффективно выделять и анализировать различия между наборами данных.
Не забывайте экспериментировать с различными цветовыми схемами, уровнями прозрачности и стилями, чтобы настроить заполненные области в соответствии с вашими конкретными требованиями. Приятной визуализации!