Добавление подписей к осям X и Y в Matplotlib: полное руководство

Зачем нужны подписи осей?

Подписи осей (axis labels) в Matplotlib играют критически важную роль в понимании и интерпретации графиков. Они предоставляют контекст, объясняя, какие данные отображаются по каждой из осей. Без четких подписей график может быть непонятным и бесполезным. В контексте интернет-маркетинга, например, корректные подписи позволяют визуализировать эффективность рекламных кампаний (зависимость CTR от бюджета), конверсии (зависимость количества лидов от источника трафика), и т.д.

Краткий обзор библиотеки Matplotlib

Matplotlib — это мощная и гибкая библиотека для визуализации данных на Python. Она предоставляет широкий набор инструментов для создания различных типов графиков, от простых линейных графиков до сложных трехмерных визуализаций. Matplotlib интегрируется с NumPy и Pandas, что делает ее удобной для работы с данными.

Базовое добавление подписей к осям

Использование xlabel() для оси X

Функция xlabel() используется для добавления подписи к оси X (горизонтальной оси) графика. Она принимает строку в качестве аргумента, которая будет отображаться в качестве подписи.

Использование ylabel() для оси Y

Аналогично, функция ylabel() используется для добавления подписи к оси Y (вертикальной оси) графика. Она также принимает строку в качестве аргумента.

Пример простого графика с подписями

import matplotlib.pyplot as plt
import numpy as np
from typing import List, Tuple


def create_simple_plot(x_data: List[float], y_data: List[float], x_label: str, y_label: str, title: str) -> None:
    """Creates a simple line plot with x and y axis labels.

    Args:
        x_data: List of x-axis values.
        y_data: List of y-axis values.
        x_label: Label for the x-axis.
        y_label: Label for the y-axis.
        title: Title of the plot.
    """
    plt.plot(x_data, y_data)
    plt.xlabel(x_label)
    plt.ylabel(y_label)
    plt.title(title)
    plt.show()


# Пример данных: количество показов и CTR для рекламной кампании
shows: List[int] = [1000, 2000, 3000, 4000, 5000]
ctr: List[float] = [0.02, 0.03, 0.025, 0.04, 0.035]

create_simple_plot(shows, ctr, "Количество показов", "CTR", "Зависимость CTR от количества показов")

Настройка внешнего вида подписей

Изменение шрифта и размера текста

Можно настроить шрифт и размер текста подписей, используя аргументы fontdict в функциях xlabel() и ylabel().

import matplotlib.pyplot as plt
import numpy as np
from typing import Dict


x = np.linspace(0, 10, 100)
y = np.sin(x)

font: Dict[str, any] = {'family': 'serif', 'size': 12, 'color': 'darkred'}
plt.plot(x, y)
plt.xlabel("X-axis", fontdict=font)
plt.ylabel("Y-axis", fontdict=font)
plt.title("Sin(x) graph")
plt.show()

Изменение цвета текста

Цвет текста можно изменить, указав аргумент color в fontdict.

Использование математических выражений (LaTeX)

Matplotlib поддерживает использование LaTeX для отображения математических выражений в подписях. Для этого необходимо заключить выражение в знаки доллара $. Например, $\alpha$ отобразит символ альфа.

Реклама
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y = x**2

plt.plot(x, y)
plt.xlabel("Time (s)")
plt.ylabel("Distance ($m^2$)") # Пример LaTeX
plt.title("Distance vs Time")
plt.show()

Размещение и выравнивание подписей

Управление положением подписи

Положение подписи можно изменить с помощью аргумента loc в функциях xlabel() и ylabel(). Допустимые значения: ‘left’, ‘center’, ‘right’ для оси X и ‘bottom’, ‘center’, ‘top’ для оси Y.

Горизонтальное и вертикальное выравнивание

Выравнивание текста можно контролировать через свойства horizontalalignment и verticalalignment объекта Text. Обычно это настраивается через fontdict или через возврат объекта текста и его последующую настройку.

Использование labelpad для настройки отступа

Аргумент labelpad позволяет настроить расстояние между подписью и осью. Это полезно для предотвращения перекрытия подписи с графиком.

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y = np.sin(x)

plt.plot(x, y)
plt.xlabel("X-axis", labelpad=15)
plt.ylabel("Y-axis", labelpad=20)
plt.title("Sin(x) graph")
plt.show()

Подписи осей для нескольких графиков (subplots)

Добавление подписей к отдельным subplot’ам

При использовании subplots() для создания нескольких графиков в одной фигуре, необходимо добавлять подписи к каждому subplot’у отдельно, используя объект Axes для каждого subplot’а.

Добавление общих подписей для всей фигуры

Функции fig.supxlabel() и fig.supylabel() позволяют добавить общие подписи для всей фигуры, охватывающие все subplot’ы.

Использование suptitle() для общей подписи

Функция suptitle() добавляет общую подпись (заголовок) для всей фигуры.

import matplotlib.pyplot as plt
import numpy as np

fig, axs = plt.subplots(2, 1, sharex=True)
x = np.linspace(0, 10, 100)

axs[0].plot(x, np.sin(x))
axs[1].plot(x, np.cos(x))

fig.supxlabel("X-axis")
fig.supylabel("Y-axis")
fig.suptitle("Sin and Cos")

plt.show()

Автоматическое формирование подписей

Использование данных для автоматической генерации подписей

Можно использовать данные для автоматической генерации подписей. Например, если оси представляют собой имена столбцов в DataFrame, можно использовать эти имена в качестве подписей.

Форматирование чисел в подписях

Форматирование чисел можно настроить с помощью строк форматирования (например, %.2f для отображения двух знаков после запятой).

Решение распространенных проблем

Подписи перекрываются с графиком

  • Используйте labelpad для увеличения отступа.
  • Измените положение подписи с помощью loc.
  • Уменьшите размер шрифта подписи.

Подписи не отображаются

  • Убедитесь, что подписи добавлены до вызова plt.show().
  • Проверьте, не перекрываются ли подписи другими элементами графика.
  • Убедитесь, что цвет текста подписи отличается от цвета фона.

Некорректное отображение символов

  • Используйте Unicode-строки (например, `u

Добавить комментарий