Anchored Objects в Matplotlib

Beginner

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

Введение

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

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

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

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

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

Импортировать библиотеки

Первым шагом является импорт необходимых библиотек. В этом практическом занятии мы будем использовать Matplotlib.

from matplotlib import pyplot as plt
from matplotlib.lines import Line2D
from matplotlib.offsetbox import (AnchoredOffsetbox, AuxTransformBox,
                                  DrawingArea, TextArea, VPacker)
from matplotlib.patches import Circle, Ellipse

Создать фигуру

Следующим шагом является создание фигуры. Мы создадим простую фигуру с одним подграфиком.

fig, ax = plt.subplots()
ax.set_aspect(1)

Добавить привязанный текст

В этом шаге мы добавим текстовое поле, привязанное к верхнему левому углу фигуры.

def draw_text(ax):
    """Draw a text-box anchored to the upper-left corner of the figure."""
    box = AnchoredOffsetbox(child=TextArea("Figure 1a"),
                            loc="upper left", frameon=True)
    box.patch.set_boxstyle("round,pad=0.,rounding_size=0.2")
    ax.add_artist(box)

draw_text(ax)

Добавить привязанные круги

В этом шаге мы добавим два круга на график с использованием привязанных объектов.

def draw_circles(ax):
    """Draw circles in axes coordinates."""
    area = DrawingArea(width=40, height=20)
    area.add_artist(Circle((10, 10), 10, fc="tab:blue"))
    area.add_artist(Circle((30, 10), 5, fc="tab:red"))
    box = AnchoredOffsetbox(
        child=area, loc="upper right", pad=0, frameon=False)
    ax.add_artist(box)

draw_circles(ax)

Добавить привязанную эллипс

В этом шаге мы добавим эллипс на график с использованием привязанных объектов.

def draw_ellipse(ax):
    """Draw an ellipse of width=0.1, height=0.15 in data coordinates."""
    aux_tr_box = AuxTransformBox(ax.transData)
    aux_tr_box.add_artist(Ellipse((0, 0), width=0.1, height=0.15))
    box = AnchoredOffsetbox(child=aux_tr_box, loc="lower left", frameon=True)
    ax.add_artist(box)

draw_ellipse(ax)

Добавить шкалу размеров

В этом шаге мы добавим шкалу размеров на график с использованием привязанных объектов.

def draw_sizebar(ax):
    """
    Draw a horizontal bar with length of 0.1 in data coordinates,
    with a fixed label center-aligned underneath.
    """
    size = 0.1
    text = r"1$^{\prime}$"
    sizebar = AuxTransformBox(ax.transData)
    sizebar.add_artist(Line2D([0, size], [0, 0], color="black"))
    text = TextArea(text)
    packer = VPacker(
        children=[sizebar, text], align="center", sep=5)  ## separation in points.
    ax.add_artist(AnchoredOffsetbox(
        child=packer, loc="lower center", frameon=False,
        pad=0.1, borderpad=0.5))  ## paddings relative to the legend fontsize.

draw_sizebar(ax)

Показать график

Последний шаг - показать график.

plt.show()

Резюме

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