Как построить функцию в Python с использованием Matplotlib
Добро пожаловать в этот всесторонний учебник по визуализации данных с использованием Matplotlib и Seaborn в Python. Пройдя этот учебник, вы научитесь строить функции с помощью Python, настраивать внешний вид графиков и экспортировать ваши графики для обмена с другими.
В ходе этого учебного пособия вы получите глубокие знания о Matplotlib, ключевой библиотеке для создания широкого спектра настраиваемых графиков для эффективной визуализации данных. Как только вы ознакомитесь с основами, мы перейдем к Seaborn. Эта библиотека использует возможности Matplotlib и предлагает очевидные преимущества с точки зрения визуальной эстетики и удобства использования.
Вот небольшой предварительный просмотр того, что вы узнаете:

Оглавление
Как построить функцию в Python с помощью Matplotlib
Чтобы построить функцию в Python с использованием Matplotlib, нам нужно определить диапазон значений x и y, соответствующих этой функции. Для этого нам нужно:
Определим нашу функцию и
Создайте диапазон непрерывных значений x и отобразите соответствующие значения y
Давайте посмотрим, как мы можем это сделать. В первую очередь, нам нужно будет импортировать наши библиотеки:
# Импорт библиотек
import matplotlib.pyplot as plt
import numpy as np
Для построения функции нам необходимо импортировать две библиотеки: matplotlib.pyplot
и numpy
. Мы используем NumPy для того, чтобы более легко применять функцию к целому массиву.
Давайте теперь определим функцию, которая будет повторять синтаксис f(x) = x ** 2
. Мы сделаем всё максимально просто, просто возводя наш вход в квадрат. Давайте посмотрим, как мы можем определить эту функцию:
# Определение функции
def f(x):
return x ** 2
Теперь, когда у нас есть функция, давайте определим наш диапазон x и диапазон y. Для этого мы будем использовать функцию linspace из NumPy, которая создает диапазон равномерно расположенных чисел. Давайте посмотрим, как это выглядит:
# Создание диапазонов для x и y
x = np.linspace(-5, 5, 1000)
y = f(x)
Поскольку мы определили массив NumPy, мы можем просто передать массив в функцию, и он будет применён поэлементно. Теперь, когда у нас есть эти массивы, давайте построим наш график:
# Построение данных
plt.plot(x, y)
plt.show()
Это возвращает следующее изображение:

Мы видим, что данные изменяются от -5 до +5, хотя график заканчивается раньше. Поскольку функция f(x) = x ** 2
фактически простирается за эти значения, мы должны изменить наш график так, чтобы он заканчивался раньше. Давайте посмотрим, как мы можем это сделать:
# Изменение пределов осей
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xlim(-5, 5)
ax.set_ylim(0, 25)
plt.show()
Давайте исследуем, что было сделано в приведенном выше блоке кода:
Мы изменили построение графика, используя объектно-ориентированный подход с помощью функции
Мы затем построили нашу функцию на осях
Наконец, мы использовали методы
.set_xlim()
и.set_ylim()
для изменения границ нашего графика.
Это вернуло следующее изображение:

В следующем разделе вы узнаете, как настроить свой график, добавив к вашим функциям легенду и заголовок.
Как добавить легенду и заголовок к графикам Matplotlib
В этом разделе вы узнаете, как добавить легенду, описывающую функцию, и заголовок к графику Matplotlib. Для этого давайте немного разгуляемся и определим функцию секции. Посмотрите на блок кода ниже, где мы строим две функции:
# Определение дополнительной функции
def sin(x):
return 5 * np.sin(x)
# Создание значений x и y
x = np.linspace(-5, 5, 1000)
y1 = f(x)
y2 = sin(x)
# Построение обеих функций
fig, ax = plt.subplots()
ax.plot(x, y1, label='f(x)=x**2')
ax.plot(x, y2, label='f(x)=5sin(x)')
ax.set_title('Построение функций в Matplotlib', size=14)
ax.set_xlim(-5, 5)
ax.set_ylim(-5, 25)
plt.legend()
plt.show()
Давайте разберем, что мы делали в приведенном выше блоке кода:
Мы определили вторую функцию и рассчитали наши диапазоны значений x и y
Мы создали наш график и оси, а затем построили обе функции на этих осях.
Обратите внимание, что мы использовали параметр
label=
, который позволяет вам маркировать диапазон в визуализацииМы затем использовали метод
.set_title()
для установки заголовка на оси нашего графика
Это возвращает следующее изображение:

Уф! Итак, мы смогли нарисовать две функции на одном графике, а затем добавить описания этих функций в легенду графика. В следующем разделе вы узнаете, как сделать это с помощью Seaborn.
Как построить функцию с помощью Seaborn
В этом разделе вы узнаете, как использовать Seaborn для построения двух функций. Поскольку этот процесс очень похож на использование Matplotlib, я не буду описывать каждую деталь, а скорее объясню, что отличается от нашей реализации в Matplotlib. Обратите внимание на приведенный ниже блок кода:
import seaborn as sns
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# Определение функций
def f(x):
return x ** 2
def sin(x):
return 5 * np.sin(x)
# Создание значений x и y для функций
x = np.linspace(-5, 5, 1000)
y1 = f(x)
y2 = sin(x)
# Создание DataFrame из значений x, y1 и y2
df = pd.DataFrame(zip(x, y1, y2), columns=['x', 'y=f(x)', 'y=5*sin(x)']).set_index('x')
fig, ax = plt.subplots()
# Построение графиков с помощью sns.lineplot() на ax
sns.set_palette('Set2') # Установка цветовой палитры
sns.set_style('ticks') # Установка стиля графика
sns.lineplot(data=df, ax=ax)
ax.set_title('Построение функций в Matplotlib', size=14) # Установка заголовка
ax.set_xlim(-5, 5) # Установка предела по оси x
ax.set_ylim(-5, 25) # Установка предела по оси y
# Удаление лишних линий из графика
sns.despine()
plt.show()
Давайте разберем, что мы сделали в приведенном выше блоке кода:
Мы импортировали Seaborn и Pandas, так как будем работать с DataFrame Pandas
Мы объявили наши две функции и передали три массива в функцию Python
zip()
, которая позволяет проходить по массивам поэлементноМы использовали некоторые вспомогательные функции Seaborn для установки стиля и палитры, а затем выполнили построение наших двух функций с помощью функции lineplot Seaborn. Поскольку значения по оси x являются индексом DataFrame, мы можем передать в функцию данные в широком формате.
Наконец, мы используем функцию Seaborn despine для удаления верхней и правой границ нашего графика
Это позволяет нам легко добавить стилизацию к нашей визуализации, на что в Matplotlib потребовалось бы значительно больше времени!
Заключение
В заключение, построение функции с использованием библиотек Python Matplotlib и Seaborn может быть мощным способом визуализации данных и получения представлений о взаимоотношениях между переменными. Используя функцию linspace из NumPy, мы можем легко создать значения x и y, чтобы представить функцию. С помощью Matplotlib мы можем построить график функции, добавить заголовок и легенду, а также настроить внешний вид графика.
Seaborn предоставляет возможности для построения графиков с более продвинутыми статистическими аналитическими и визуализационными инструментами (официальная документация по lineplot). Эти библиотеки позволяют нам быстро и легко генерировать графики, которые помогают лучше понять наши данные и принимать более обоснованные решения. В целом, понимание того, как использовать эти библиотеки для построения графиков функций, является ценным навыком для всех, кто работает с данными в Python.
Last updated