Направленная стрелка с привязкой в Matplotlib

Beginner

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

Введение

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

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

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

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

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

Импортируем необходимые библиотеки

Сначала нам нужно импортировать необходимые библиотеки, такие как Matplotlib, NumPy, менеджер шрифтов Matplotlib и AnchoredDirectionArrows из mpl_toolkits.axes_grid1. Мы будем использовать эти библиотеки для создания направленных стрелок с привязкой.

import matplotlib.pyplot as plt
import numpy as np

import matplotlib.font_manager as fm
from mpl_toolkits.axes_grid1.anchored_artists import AnchoredDirectionArrows

Создаем график

Далее мы создадим простой график с использованием NumPy. Этот график будет служить фоном для направленных стрелок с привязкой.

## Fixing random state for reproducibility
np.random.seed(19680801)

fig, ax = plt.subplots()
ax.imshow(np.random.random((10, 10)))

Создаем простую стрелку

Теперь мы создадим простую направленную стрелку с привязкой с использованием класса AnchoredDirectionArrows. Эта стрелка будет показывать направления по осям X и Y на графике.

## Simple example
simple_arrow = AnchoredDirectionArrows(ax.transAxes, 'X', 'Y')
ax.add_artist(simple_arrow)

Создаем стрелку с высоким контрастом

Далее мы создадим направленную стрелку с привязкой с высоким контрастом. Эта стрелка будет иметь белый контур и черный залив.

high_contrast_part_1 = AnchoredDirectionArrows(
                            ax.transAxes,
                            '111', r'11$\overline{2}$',
                            loc='upper right',
                            arrow_props={'ec': 'w', 'fc': 'none', 'alpha': 1,
                                         'lw': 2}
                            )
ax.add_artist(high_contrast_part_1)

high_contrast_part_2 = AnchoredDirectionArrows(
                            ax.transAxes,
                            '111', r'11$\overline{2}$',
                            loc='upper right',
                            arrow_props={'ec': 'none', 'fc': 'k'},
                            text_props={'ec': 'w', 'fc': 'k', 'lw': 0.4}
                            )
ax.add_artist(high_contrast_part_2)

Создаем повернутую стрелку

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

fontprops = fm.FontProperties(family='serif')

rotated_arrow = AnchoredDirectionArrows(
                    ax.transAxes,
                    '30', '120',
                    loc='center',
                    color='w',
                    angle=30,
                    fontproperties=fontprops
                    )
ax.add_artist(rotated_arrow)

Меняем направления стрелок

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

a1 = AnchoredDirectionArrows(
        ax.transAxes, 'A', 'B', loc='lower center',
        length=-0.15,
        sep_x=0.03, sep_y=0.03,
        color='r'
    )
ax.add_artist(a1)

a2 = AnchoredDirectionArrows(
        ax.transAxes, 'A', ' B', loc='lower left',
        aspect_ratio=-1,
        sep_x=0.01, sep_y=-0.02,
        color='orange'
        )
ax.add_artist(a2)


a3 = AnchoredDirectionArrows(
        ax.transAxes, ' A', 'B', loc='lower right',
        length=-0.15,
        aspect_ratio=-1,
        sep_y=-0.1, sep_x=0.04,
        color='cyan'
        )
ax.add_artist(a3)

Отображаем график

Наконец, мы отобразим график с всеми направленными стрелками с привязкой.

plt.show()

Резюме

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