2025, Nov 18 09:03
Как задать одинаковые деления и подписи на осях X и Y в Matplotlib
Короткий прием для Matplotlib: единая настройка делений и подписей на осях X и Y без повторов. Вынесем стиль в функцию, сократим код и избежим расхождений.
Когда оси X и Y используют одни и те же деления и подписи, четыре почти одинаковых вызова в Matplotlib быстро превращаются в шум. Задача — сохранить единый стиль графиков, сократить шаблонный код и сделать параметры оформления легко изменяемыми в одном месте.
Пример, где настройка делений повторяется
Ниже фрагмент кода с небольшим графиком: обе оси имеют одинаковые положения делений и те же подписи — жирные и небольшого размера.
import matplotlib.pyplot as mp
import seaborn as sb
mp.style.use('seaborn-v0_8')
canvas, axes = mp.subplots(figsize=(4, 4))
tick_vals = [0.00, 0.25, 0.50, 0.75, 1.00]
axes.set_xticks(tick_vals)
axes.set_xticklabels(tick_vals, weight='bold', size=8)
axes.set_yticks(tick_vals)
axes.set_yticklabels(tick_vals, weight='bold', size=8)
mp.show()В чём суть проблемы
Настройки для X и Y совпадают, но они продублированы в четырёх вызовах. Поддерживать это неудобно, а при последующих правках — например, веса шрифта или размера — легко рассинхронизировать оси, изменив параметр только в одном месте. Замысел простой: задать одинаковые деления и подписи на обеих осях одним понятным действием.
Лаконичное решение
Крошечная вспомогательная функция сохраняет ту же логику, но объединяет настройку. Она принимает объект осей, набор значений делений и любые параметры стилевого оформления через именованные аргументы, после чего применяет их к обеим осям.
import matplotlib.pyplot as mp
mp.style.use('seaborn-v0_8')
def apply_ticks_and_text(axis_obj, values, **opts):
axis_obj.set_xticks(values)
axis_obj.set_xticklabels(values, **opts)
axis_obj.set_yticks(values)
axis_obj.set_yticklabels(values, **opts)
canvas, axes = mp.subplots(figsize=(4, 4))
tick_vals = [0.00, 0.25, 0.50, 0.75, 1.00]
apply_ticks_and_text(axes, tick_vals, weight='bold', size=8)
mp.show()Почему это важно
Инкапсуляция уменьшает повторения и помогает держать код построения графиков в порядке. Когда меняются подписи или стиль, правки вносятся в одном-единственном месте. Это повышает читаемость, упрощает поддержание единообразного форматирования и снижает риск несовпадающих параметров между осями.
Итоги
Если X и Y должны иметь одинаковые деления и подписи, вынесите настройку в небольшую функцию. Один раз передайте позиции делений и параметры подписей, а остальное поручите помощнику: он настроит обе оси. Графики останутся согласованными, а код — компактным и поддерживаемым.