使用 Python Matplotlib 创建形状

PythonPythonBeginner
立即练习

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

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

简介

本教程旨在指导用户如何使用 Python Matplotlib 创建圆形、楔形和多边形。用户还可以使用 .collections.PatchCollection 来可视化创建的形状。

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们会及时为你解决问题。

导入必要的库

首先,我们需要导入必要的库。

import matplotlib.pyplot as plt
import numpy as np

from matplotlib.collections import PatchCollection
from matplotlib.patches import Circle, Polygon, Wedge

创建一个图形和一个坐标轴

我们创建一个图形和一个坐标轴来绘制形状。

fig, ax = plt.subplots()

定义顶点数量和形状数量

我们定义要创建的顶点数量和形状数量。

resolution = 50  ## 顶点数量
N = 3

创建圆形

我们使用 Circle() 创建圆形,并将它们追加到一个补丁列表中。

x = np.random.rand(N)
y = np.random.rand(N)
radii = 0.1*np.random.rand(N)
patches = []
for x1, y1, r in zip(x, y, radii):
    circle = Circle((x1, y1), r)
    patches.append(circle)

创建扇形

我们使用 Wedge() 创建扇形,并将它们追加到补丁列表中。

x = np.random.rand(N)
y = np.random.rand(N)
radii = 0.1*np.random.rand(N)
theta1 = 360.0*np.random.rand(N)
theta2 = 360.0*np.random.rand(N)
for x1, y1, r, t1, t2 in zip(x, y, radii, theta1, theta2):
    wedge = Wedge((x1, y1), r, t1, t2)
    patches.append(wedge)

为扇形添加限制条件

我们为扇形添加限制条件。

patches += [
    Wedge((.3,.7),.1, 0, 360),             ## 完整的圆
    Wedge((.7,.8),.2, 0, 360, width=0.05),  ## 完整的圆环
    Wedge((.8,.3),.2, 0, 45),              ## 完整的扇形
    Wedge((.8,.3),.2, 45, 90, width=0.10),  ## 环形扇形
]

创建多边形

我们使用 Polygon() 创建多边形,并将它们追加到补丁列表中。

for i in range(N):
    polygon = Polygon(np.random.rand(N, 2), closed=True)
    patches.append(polygon)

设置颜色并创建 PatchCollection

我们设置形状的颜色并创建一个 PatchCollection()

colors = 100 * np.random.rand(len(patches))
p = PatchCollection(patches, alpha=0.4)
p.set_array(colors)
ax.add_collection(p)
fig.colorbar(p, ax=ax)

显示绘图

我们显示该绘图。

plt.show()

总结

本教程展示了如何使用 Python 的 Matplotlib 创建圆形、扇形和多边形。我们还学习了如何使用 .collections.PatchCollection 来可视化创建的形状。