在 Matplotlib 中创建多边形

Beginner

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

简介

Matplotlib 是一个用于数据可视化的 Python 库。在本实验中,我们将使用 Matplotlib 以编程方式或交互式方式创建一个多边形。该多边形可用于突出显示感兴趣的区域或屏蔽绘图的特定区域。

虚拟机使用提示

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

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

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

导入所需库

在开始使用 Matplotlib 之前,我们需要导入必要的库。在本实验中,我们将使用 matplotlib.pyplotmatplotlib.widgets

import matplotlib.pyplot as plt
from matplotlib.widgets import PolygonSelector

以编程方式创建多边形

要以编程方式创建多边形,我们需要创建一个 Figure 对象和一个 Axes 对象。然后,我们可以创建一个 PolygonSelector 对象并向其添加顶点。最后,我们可以在 Axes 上绘制多边形。

fig, ax = plt.subplots()
selector = PolygonSelector(ax, lambda *args: None)

## 添加三个顶点
selector.verts = [(0.1, 0.4), (0.5, 0.9), (0.3, 0.2)]

## 绘制多边形
ax.add_patch(plt.Polygon(selector.verts, alpha=0.3))
plt.show()

交互式创建多边形

要交互式地创建多边形,我们需要创建一个 Figure 对象和一个 Axes 对象。然后,我们可以创建一个 PolygonSelector 对象,并通过在绘图上单击来向其添加顶点。我们还可以使用 shiftctrl 键来移动顶点。

fig, ax = plt.subplots()
selector = PolygonSelector(ax, lambda *args: None)

print("点击图形以创建多边形。")
print("按 'esc' 键开始绘制新的多边形。")
print("尝试按住'shift' 键以移动所有顶点。")
print("尝试按住 'ctrl' 键以移动单个顶点。")

plt.show()

综合运用

让我们创建一个完整的示例,其中包括以编程方式和交互式方式创建多边形。

import matplotlib.pyplot as plt
from matplotlib.widgets import PolygonSelector

## 创建一个图形和坐标轴
fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(10, 5))

## 创建一个多边形选择器对象并添加顶点
selector1 = PolygonSelector(ax1, lambda *args: None)
selector1.verts = [(0.1, 0.4), (0.5, 0.9), (0.3, 0.2)]

## 绘制多边形
ax1.add_patch(plt.Polygon(selector1.verts, alpha=0.3))

## 创建另一个用于交互式创建的多边形选择器对象
selector2 = PolygonSelector(ax2, lambda *args: None)

print("点击图形以创建多边形。")
print("按 'esc' 键开始绘制新的多边形。")
print("尝试按住'shift' 键以移动所有顶点。")
print("尝试按住 'ctrl' 键以移动单个顶点。")

plt.show()

总结

在本实验中,我们学习了如何使用 Matplotlib 以编程方式和交互式方式创建多边形。我们还学习了如何向 PolygonSelector 对象添加顶点,并在 Axes 上绘制生成的多边形。这些知识对于突出显示感兴趣的区域或在绘图中屏蔽某些区域可能会很有用。