Добавление меток к вторичной оси Y в Matplotlib: примеры
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Для добавления обозначения к дополнительной оси ординат в Matplotlib следует использовать метод set_ylabel()
, применяемый к объекту, представляющему указанную ось. В приведённом ниже примере ax2
будет являться дополнительной осью Y:
import matplotlib.pyplot as plt
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax2.set_ylabel('Вторичное обозначение')
plt.show()
Метод twinx()
предназначен для создания указанной дополнительной оси, соответственно, set_ylabel()
применяется уже потом. Как и в любом другом случае, обозначение вы можете настроить по своему вкусу, к примеру, задать шрифт или выбрать цвет.
Взаимодействие с двумя осями
Сложные аналитические задачи иногда требуют использования двух осей в графике. Разберёмся детальней, как добавить и настроить дополнительную ось Y в Matplotlib.
Создание дополнительной оси Y
Для создания блока дополнительной оси Y необходимо применить метод twinx()
. После этого к ней можно добавить метку методом set_ylabel()
:
import numpy as np
import matplotlib.pyplot as plt
# Исходные данные испольуземые в примере:
x = np.linspace(0, 10, 100)
y1 = np.exp(x) # Экспоненциальная зависимость
y2 = np.log(x + 1) # Логарифмическая зависимость
fig, ax1 = plt.subplots()
# Первая ось Y и соответствующая метка
ax1.plot(x, y1, 'g-')
ax1.set_ylabel('Экспоненциальная зависимость', color='g')
# Добавление дополнительной оси Y и соответствующей метки
ax2 = ax1.twinx()
ax2.plot(x, y2, 'b-')
ax2.set_ylabel('Логарифмическая зависимость', color='b')
plt.show()
Форматирование меток осей
Сколько-нибудь заметное визуальное представление данных имеет огромное значение. Чтобы метки осей гармонировали с образом графика и легко воспринимались, можно настроить их цвет и размер:
ax1.set_ylabel('Экспоненциальная зависимость', color='g', fontsize=14)
ax2.set_ylabel('Логарифмическая зависимость', color='b', fontsize=14)
Согласование осей
Для полноценного функционирования обеих осей нельзя допускать противоречий между ними. Эту проблему можно решить, синхронизировав их масштаб и пределы:
ax1.set_ylim(0, 10000)
ax2.set_ylim(0, 10)
Интеграция с Pandas
Matplotlib легко интегрируется с Pandas. Датасеты из DataFrame можно отображать на графиках, воспользовавшись параметром secondary_y=True
. Затем установите метку для второй оси с помощью right_ax.set_ylabel()
:
import pandas as pd
# Пусть `df` – это DataFrame в Pandas с колонками 'A' и 'B'
ax = df['A'].plot()
ax.set_ylabel('Обозначение основной оси')
ax2 = df['B'].plot(secondary_y=True)
ax2.right_ax.set_ylabel('Обозначение дополнительной оси')
Тонкие настройки: кастомизация
Ориентируйтесь на свои потребности при настройке метки:
ax2.set_ylabel('Доход, $', fontsize=12, color='darkgreen')
Если нужно взаимодействовать с текущей активной осью, воспользуйтесь plt.gca().twinx()
:
ax2 = plt.gca().twinx()
Визуализация
Представьте график из matplotlib как сценическую площадку для ваших данных:
Левая часть сцены 🎭: Основной график с своей меткой на оси Y.
Правая часть сцены 🎭: Вспомогательный график с меткой дополнительной оси Y.
# Основной график в центре событий
ax.set_ylabel('Преобладающая зависимость')
# Уже появляется вспомогательный график
ax2 = ax.twinx()
ax2.set_ylabel('Дополнительная зависимость')
Таким образом, зритель сразу сможет увидеть все аспекты вашего исследования.
Левая часть сцены 🎭: [Преобладающая зависимость] 📉
Правая часть сцены 🎭: [Дополнительная зависимость] 📈
Каждый график имеет свой неповторимый 'тембр', в результате чего становятся понятными все обозначения на осях Y, представленные вами.
Полезные материалы
- matplotlib.axes.Axes.twinx — Документация Matplotlib 3.8.2 – Изучите метод
twinx()
и станьте профи в работе с двумя осями Y. - Дополнительная Ось — Документация Matplotlib 3.8.2 – Пошаговое руководство по работе с двумя осями.
- python – несколько осей в matplotlib с различной шкалой – Дискуссия на Stack Overflow о работе с несколькими осями Y в одном графике.
- Создание графиков с помощью Matplotlib на Python (Руководство) – Real Python – Советы от Real Python по созданию сложных графиков с использованием двух осей.
- matplotlib.axes — Документация Matplotlib 3.8.2 – Знакомство с методом
set_ylabel
откроет новые возможности для настройки обозначений осей.