Matplotlib Эллипс с стрелкой ориентации

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

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

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

Введение

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

Советы по использованию ВМ

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

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

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

Импортируем Matplotlib и создаем фигуру и оси

Сначала вам нужно импортировать Matplotlib и создать фигуру и оси. Фигура и оси - это контейнеры для вашего графика.

import matplotlib.pyplot as plt

## Create a figure and axis
fig, ax = plt.subplots(subplot_kw={"aspect": "equal"})

Создаем эллипс

Далее вам нужно создать эллипс с использованием класса Ellipse. Вы можете указать центр эллипса, ширину и высоту эллипса, а также угол вращения.

from matplotlib.patches import Ellipse

ellipse = Ellipse(
    xy=(2, 4),
    width=30,
    height=20,
    angle=35,
    facecolor="none",
    edgecolor="b"
)
ax.add_patch(ellipse)

Добавляем стрелку ориентации

Вы можете добавить стрелку ориентации к эллипсу, нанося маркер в конец малой оси. Вы можете использовать метод get_co_vertices() для получения координат вершин эллипса. Затем вы можете использовать класс Affine2D() для вращения маркера, чтобы он соответствовал углу эллипса.

from matplotlib.markers import MarkerStyle
from matplotlib.transforms import Affine2D

## Plot an arrow marker at the end point of minor axis
vertices = ellipse.get_co_vertices()
t = Affine2D().rotate_deg(ellipse.angle)
ax.plot(
    vertices[0][0],
    vertices[0][1],
    color="b",
    marker=MarkerStyle(">", "full", t),
    markersize=10
)

Разворачиваем стрелку ориентации

Если вы хотите развернуть стрелку ориентации, вы можете поменять тип маркера с > на <.

## To reverse the orientation arrow, switch the marker type from > to <.
ax.plot(
    vertices[0][0],
    vertices[0][1],
    color="b",
    marker=MarkerStyle("<", "full", t),
    markersize=10
)

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

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

plt.show()

Резюме

Поздравляем! Вы узнали, как рисовать эллипс с стрелкой ориентации с использованием Matplotlib. Эта техника может быть полезна для визуализации данных, имеющих направление.