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

PythonPythonBeginner
Практиковаться сейчас

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом руководстве вы узнаете, как создать ссылку в стиле стрелки с помощью Matplotlib в Python. Диаграмма будет отображать разные стили стрелки, доступные в ~.Axes.annotate.

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

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

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

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

Импортировать необходимые библиотеки

Импортируйте необходимые библиотеки для создания ссылки в стиле стрелки.

import inspect
import itertools
import re

import matplotlib.pyplot as plt

import matplotlib.patches as mpatches

Получить стили стрелки

Используйте mpatches.ArrowStyle.get_styles(), чтобы получить все доступные стили стрелки в ~.Axes.annotate.

styles = mpatches.ArrowStyle.get_styles()

Настроить фигуру

Настройте фигуру с использованием plt.figure() и add_gridspec(). Фигура будет иметь сетку из 2 столбцов и n строк, где n - количество стилей стрелки. Каждая ячейка в сетке будет содержать стиль стрелки и его параметры по умолчанию.

ncol = 2
nrow = (len(styles) + 1) // ncol
axs = (plt.figure(figsize=(4 * ncol, 1 + nrow))
     .add_gridspec(1 + nrow, ncol,
                    wspace=.7, left=.1, right=.9, bottom=0, top=1).subplots())
for ax in axs.flat:
    ax.set_axis_off()
for ax in axs[0, :]:
    ax.text(0,.5, "arrowstyle",
            transform=ax.transAxes, size="large", color="tab:blue",
            horizontalalignment="center", verticalalignment="center")
    ax.text(.35,.5, "default parameters",
            transform=ax.transAxes,
            horizontalalignment="left", verticalalignment="center")

Построить стили стрелки

Постройте каждый стиль стрелки в ячейке сетки, вместе с его параметрами по умолчанию. Используйте ax.annotate(), чтобы добавить название стиля стрелки и его параметры по умолчанию в ячейку.

for ax, (stylename, stylecls) in zip(axs[1:, :].T.flat, styles.items()):
    l, = ax.plot(.25,.5, "ok", transform=ax.transAxes)
    ax.annotate(stylename, (.25,.5), (-0.1,.5),
                xycoords="axes fraction", textcoords="axes fraction",
                size="large", color="tab:blue",
                horizontalalignment="center", verticalalignment="center",
                arrowprops=dict(
                    arrowstyle=stylename, connectionstyle="arc3,rad=-0.05",
                    color="k", shrinkA=5, shrinkB=5, patchB=l,
                ),
                bbox=dict(boxstyle="square", fc="w"))
    ## wrap at every nth comma (n = 1 or 2, depending on text length)
    s = str(inspect.signature(stylecls))[1:-1]
    n = 2 if s.count(',') > 3 else 1
    ax.text(.35,.5,
            re.sub(', ', lambda m, c=itertools.count(1): m.group()
                   if next(c) % n else '\n', s),
            transform=ax.transAxes,
            horizontalalignment="left", verticalalignment="center")

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

Покажите ссылку на стили стрелки с использованием plt.show().

plt.show()

Резюме

В этом руководстве вы узнали, как создать ссылку на стили стрелки с использованием Matplotlib в Python. Вы использовали mpatches.ArrowStyle.get_styles(), чтобы получить все доступные стили стрелки в ~.Axes.annotate, настроили фигуру с использованием plt.figure() и add_gridspec(), построили каждый стиль стрелки в ячейке сетки и показали график с использованием plt.show().