使用 Matplotlib 创建填充多边形

PythonPythonBeginner
立即练习

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

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将学习如何使用 Python 中的 Matplotlib 创建一个填充多边形。我们将以科赫雪花为例进行多边形的创建。

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到“笔记本”标签页,以访问 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:
            ## 初始三角形
            角度 = np.array([0, 120, 240]) + 90
            return scale / np.sqrt(3) * np.exp(np.deg2rad(角度) * 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()

总结

在这个实验中,我们学习了如何使用 Python 中的 Matplotlib 创建一个填充多边形。我们以科赫雪花为例展示了多边形,并演示了如何用不同的颜色和线宽来自定义多边形。