Как настроить подписи осей X и Y в Matplotlib?

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

Подписи осей (x и y) в Matplotlib критически важны для понимания графика. Они предоставляют контекст, позволяя интерпретировать представленные данные. Без четких подписей, график становится набором линий и точек, лишенным смысла.

Краткий обзор структуры графика Matplotlib

График Matplotlib состоит из нескольких уровней: Figure (область рисования), Axes (система координат, где происходит рисование), и элементов графика, таких как линии, точки, и, конечно, подписи осей. Axes – это объект, с которым мы взаимодействуем для настройки большинства элементов графика, включая подписи осей.

Основы добавления и изменения подписей осей

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

В Matplotlib для добавления или изменения подписей осей используются функции xlabel() для оси X и ylabel() для оси Y. Эти функции позволяют установить текст, который будет отображаться рядом с соответствующей осью.

Установка текста подписи

Простейший способ установить текст подписи – передать строку в качестве аргумента функциям xlabel() и ylabel().

Примеры базовой настройки подписей

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

def create_sample_plot(x_data: List[float], y_data: List[float], x_label: str, y_label: str, title: str) -> None:
    """Creates and displays a simple Matplotlib plot with specified labels and title."""
    plt.plot(x_data, y_data)
    plt.xlabel(x_label)
    plt.ylabel(y_label)
    plt.title(title)
    plt.show()


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

# Set labels and title
x_label = "Время (секунды)"
y_label = "Амплитуда"
title = "Синусоидальный сигнал"

# Create the plot
create_sample_plot(x, y, x_label, y_label, title)

Расширенные возможности настройки подписей осей

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

Для более детальной настройки внешнего вида подписей, можно использовать аргумент fontdict в функциях xlabel() и ylabel(). Этот аргумент принимает словарь, содержащий параметры шрифта, такие как размер (fontsize), начертание (fontweight), и семейство шрифтов (fontfamily).

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

Цвет текста подписи можно изменить с помощью параметра color в fontdict.

import matplotlib.pyplot as plt
import numpy as np

def customize_labels():
    x = np.linspace(0, 10, 100)
    y = np.cos(x)

    plt.plot(x, y)
    plt.xlabel("X-axis", fontdict={'fontsize': 16, 'fontweight': 'bold', 'color': 'blue'})
    plt.ylabel("Y-axis", fontdict={'fontsize': 14, 'color': 'green'})
    plt.title("Customized Labels")
    plt.show()

customize_labels()

Добавление математических символов в подписи (LaTeX)

Matplotlib поддерживает отображение математических символов с использованием синтаксиса LaTeX. Для этого необходимо заключить LaTeX-код в знаки доллара ($).

import matplotlib.pyplot as plt
import numpy as np

def add_latex_label():
    x = np.linspace(0, 5, 100)
    y = x**2

    plt.plot(x, y)
    plt.xlabel("Время ($t$)")
    plt.ylabel("Квадрат времени ($t^2$)")
    plt.title("График зависимости $t^2$ от $t$")
    plt.show()

add_latex_label()

Поворот подписей осей

Иногда требуется повернуть подписи осей, чтобы они лучше помещались на графике или выглядели более эстетично. Для этого можно использовать параметр rotation в функциях xlabel() и ylabel(). Значение параметра задается в градусах.

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

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

Положение подписи относительно оси можно настроить с помощью параметров horizontalalignment (или ha) и verticalalignment (или va). Они позволяют указать, как подпись должна быть выровнена относительно своей позиции.

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

Параметр labelpad позволяет настроить отступ между подписью и осью. Это полезно, когда подпись слишком близко расположена к оси и сливается с ней.

import matplotlib.pyplot as plt
import numpy as np

def adjust_label_position():
    x = np.arange(5)
    y = np.arange(5)

    plt.plot(x,y)
    plt.xlabel("X-axis Label", labelpad=20)
    plt.ylabel("Y-axis Label", labelpad=30)
    plt.title("Adjusting Label Position")

    plt.show()

adjust_label_position()

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

Подписи обрезаются или перекрываются

Если подписи обрезаются или перекрываются, можно увеличить размер области рисования (Figure) или использовать plt.tight_layout() для автоматической подгонки размеров элементов графика.

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

Проблемы с отображением символов (особенно кириллицы) часто связаны с неправильной кодировкой. Убедитесь, что в начале скрипта указана кодировка utf-8 (# -*- coding: utf-8 -*-) и используйте шрифты, поддерживающие нужные символы.

Примеры сложных сценариев настройки

Рассмотрим пример настройки подписей для графика, отображающего результаты A/B-теста в интернет-маркетинге:

import matplotlib.pyplot as plt
import numpy as np

def ab_test_labels():
    groups = ['Control', 'Treatment A', 'Treatment B']
    conversion_rates = [0.05, 0.065, 0.072]
    error = [0.01, 0.012, 0.015]

    plt.bar(groups, conversion_rates, yerr=error, capsize=5)
    plt.xlabel("Варианты A/B теста", fontdict={'fontsize': 12})
    plt.ylabel("Конверсия", fontdict={'fontsize': 12})
    plt.title("Результаты A/B теста по увеличению конверсии", fontdict={'fontsize': 14, 'fontweight': 'bold'})
    plt.ylim(0, 0.1)  # Limit the y axis
    plt.show()

ab_test_labels()

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