Создание заполненного многоугольника с использованием Matplotlib

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

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

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

Введение

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

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

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

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

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

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

Прежде чем начать, импортируем необходимые библиотеки.

import matplotlib.pyplot as plt
import numpy as np

Определяем функцию для снежинки Коха

Далее мы определим функцию для генерации снежинки Коха. Функция принимает два параметра: глубину рекурсии и коэффициент масштабирования.

def koch_snowflake(order, scale=10):
    """
    Возвращает два списка x, y с координатами точек снежинки Коха.

    Параметры
    ----------
    order : int
        Глубина рекурсии.
    scale : float
        Размер снежинки (длина стороны базового треугольника).
    """
    def _koch_snowflake_complex(order):
        if order == 0:
            ## начальный треугольник
            angles = np.array([0, 120, 240]) + 90
            return scale / np.sqrt(3) * np.exp(np.deg2rad(angles) * 1j)
        else:
            ZR = 0.5 - 0.5j * np.sqrt(3) / 3

            p1 = _koch_snowflake_complex(order - 1)  ## точки начала
            p2 = np.roll(p1, shift=-1)  ## точки конца
            dp = p2 - p1  ## векторы соединения

            new_points = np.empty(len(p1) * 4, dtype=np.complex128)
            new_points[::4] = p1
            new_points[1::4] = p1 + dp / 3
            new_points[2::4] = p1 + dp * ZR
            new_points[3::4] = p1 + dp / 3 * 2
            return new_points

    points = _koch_snowflake_complex(order)
    x, y = points.real, points.imag
    return x, y

Генерируем заполненный многоугольник

Теперь мы можем сгенерировать заполненный многоугольник с использованием функции fill(). Мы будем использовать функцию для снежинки Коха, чтобы сгенерировать координаты для многоугольника.

x, y = koch_snowflake(order=5)

plt.figure(figsize=(8, 8))
plt.axis('equal')
plt.fill(x, y)
plt.show()

Настраиваем многоугольник

Мы можем настроить цвета и толщину линий многоугольника, используя именованные аргументы в функции fill().

x, y = koch_snowflake(order=2)

fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(9, 3),
                                    subplot_kw={'aspect': 'equal'})
ax1.fill(x, y)
ax2.fill(x, y, facecolor='lightsalmon', edgecolor='orangered', linewidth=3)
ax3.fill(x, y, facecolor='none', edgecolor='purple', linewidth=3)

plt.show()

Резюме

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