Маркировка подграфиков с использованием Matplotlib

Beginner

This tutorial is from open-source community. Access the source code

Введение

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

Советы по работе с ВМ

После запуска ВМ щелкните в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.

Импорт библиотек

Первым шагом является импорт необходимых библиотек. Мы будем использовать matplotlib.pyplot и matplotlib.transforms для создания и преобразования подграфиков.

import matplotlib.pyplot as plt
import matplotlib.transforms as mtransforms

Создание подграфиков

Далее мы создаем подграфики с использованием plt.subplot_mosaic. Мы создадим сетку подграфиков размером 3x2 и присвоим им следующие метки:

  • Верхний левый график будет подписан как "a)"
  • Нижний левый график будет подписан как "b)"
  • Верхний правый и нижний правый графики будут подписаны соответственно как "c)" и "d)".
fig, axs = plt.subplot_mosaic([['a)', 'c)'], ['b)', 'c)'], ['d)', 'd)']], layout='constrained')

Метка внутри осей

Самый простой способ подписать подграфики - это поместить метку внутри осей. Мы можем это сделать, используя метод ax.text. Мы пройдем по каждому подграфику и добавим метку внутри осей с использованием ax.transAxes.

for label, ax in axs.items():
    ## label physical distance in and down:
    trans = mtransforms.ScaledTranslation(10/72, -5/72, fig.dpi_scale_trans)
    ax.text(0.0, 1.0, label, transform=ax.transAxes + trans,
            fontsize='medium', verticalalignment='top', fontfamily='serif',
            bbox=dict(facecolor='0.7', edgecolor='none', pad=3.0))

Метка вне осей

Может быть, мы предпочитаем метки вне осей, но при этом они должны быть выровнены друг с другом. В этом случае мы используем немного другой трансформ.

for label, ax in axs.items():
    ## label physical distance to the left and up:
    trans = mtransforms.ScaledTranslation(-20/72, 7/72, fig.dpi_scale_trans)
    ax.text(0.0, 1.0, label, transform=ax.transAxes + trans,
            fontsize='medium', va='bottom', fontfamily='serif')

Метка с заголовком

Если мы хотим, чтобы метка была выровнена с заголовком, мы можем включить ее в заголовок или использовать ключевой аргумент loc.

for label, ax in axs.items():
    ax.set_title('Normal Title', fontstyle='italic')
    ax.set_title(label, fontfamily='serif', loc='left', fontsize='medium')

Отображение подграфиков

Наконец, мы отображаем подграфики с использованием plt.show().

plt.show()

Резюме

В этом практическом занятии мы узнали, как подписывать подграфики в Matplotlib с использованием различных методов. Мы использовали ax.text для подписей внутри осей, ax.set_title для подписей с заголовком и plt.subplot_mosaic для создания подграфиков. Мы также использовали matplotlib.transforms для трансформации осей, чтобы выровнять метки. Подписывая подграфики, мы можем сделать наши графики более информативными и легче понять.