Как построить функцию в Python с использованием Matplotlib

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

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

Вот небольшой предварительный просмотр того, что вы узнаете:

Оглавление

Как построить функцию в Python с помощью Matplotlib

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

  1. Определим нашу функцию и

  2. Создайте диапазон непрерывных значений 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()

Давайте исследуем, что было сделано в приведенном выше блоке кода:

  1. Мы изменили построение графика, используя объектно-ориентированный подход с помощью функции

  2. Мы затем построили нашу функцию на осях

  3. Наконец, мы использовали методы .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()

Давайте разберем, что мы делали в приведенном выше блоке кода:

  1. Мы определили вторую функцию и рассчитали наши диапазоны значений x и y

  2. Мы создали наш график и оси, а затем построили обе функции на этих осях.

  3. Обратите внимание, что мы использовали параметр label=, который позволяет вам маркировать диапазон в визуализации

  4. Мы затем использовали метод .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()

Давайте разберем, что мы сделали в приведенном выше блоке кода:

  1. Мы импортировали Seaborn и Pandas, так как будем работать с DataFrame Pandas

  2. Мы объявили наши две функции и передали три массива в функцию Python zip(), которая позволяет проходить по массивам поэлементно

  3. Мы использовали некоторые вспомогательные функции Seaborn для установки стиля и палитры, а затем выполнили построение наших двух функций с помощью функции lineplot Seaborn. Поскольку значения по оси x являются индексом DataFrame, мы можем передать в функцию данные в широком формате.

  4. Наконец, мы используем функцию Seaborn despine для удаления верхней и правой границ нашего графика

Это позволяет нам легко добавить стилизацию к нашей визуализации, на что в Matplotlib потребовалось бы значительно больше времени!

Заключение

В заключение, построение функции с использованием библиотек Python Matplotlib и Seaborn может быть мощным способом визуализации данных и получения представлений о взаимоотношениях между переменными. Используя функцию linspace из NumPy, мы можем легко создать значения x и y, чтобы представить функцию. С помощью Matplotlib мы можем построить график функции, добавить заголовок и легенду, а также настроить внешний вид графика.

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

Last updated