Matplotlib 等高线可视化

Beginner

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

简介

本实验将指导你如何使用 Matplotlib 中的 ContourSet 显示自己的等高线和多边形。每个级别的等高线是多边形的列表/元组。两个级别之间的填充等高线也是多边形的列表/元组。点可以按顺时针或逆时针顺序排列。

虚拟机提示

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

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

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

导入必要的库

第一步是导入必要的库。在本实验中,我们将使用 Matplotlib。

import matplotlib.pyplot as plt
import matplotlib.cm as cm
from matplotlib.contour import ContourSet
from matplotlib.path import Path

定义等高线和多边形

下一步是定义等高线和多边形。在这个例子中,我们有两个级别之间的线条和填充等高线。

## 每个级别的等高线是多边形的列表/元组。
lines0 = [[[0, 0], [0, 4]]]
lines1 = [[[2, 0], [1, 2], [1, 3]]]
lines2 = [[[3, 0], [3, 2]], [[3, 3], [3, 4]]]  ## 注意有两条线。

## 两个级别之间的填充等高线也是多边形的列表/元组。
## 点可以按顺时针或逆时针顺序排列。
filled01 = [[[0, 0], [0, 4], [1, 3], [1, 2], [2, 0]]]
filled12 = [[[2, 0], [3, 0], [3, 2], [1, 3], [1, 2]],   ## 注意有两个多边形。
            [[1, 4], [3, 4], [3, 3]]]

创建绘图

下一步是创建绘图。这可以使用 ContourSet 函数来完成。

fig, ax = plt.subplots()

## 使用 filled=True 绘制填充等高线。
cs = ContourSet(ax, [0, 1, 2], [filled01, filled12], filled=True, cmap=cm.bone)
cbar = fig.colorbar(cs)

## 等高线(非填充)。
lines = ContourSet(
    ax, [0, 1, 2], [lines0, lines1, lines2], cmap=cm.cool, linewidths=3)
cbar.add_lines(lines)

ax.set(xlim=(-0.5, 3.5), ylim=(-0.5, 4.5),
       title='用户指定的等高线')

创建带空洞的填充等高线

如 Path 类中所述,可以在多边形顶点的单个列表中指定多个填充等高线,并附带顶点类型(代码类型)列表。这对于带有空洞的多边形特别有用。

fig, ax = plt.subplots()
filled01 = [[[0, 0], [3, 0], [3, 3], [0, 3], [1, 1], [1, 2], [2, 2], [2, 1]]]
M = Path.MOVETO
L = Path.LINETO
kinds01 = [[M, L, L, L, M, L, L, L]]
cs = ContourSet(ax, [0, 1], [filled01], [kinds01], filled=True)
cbar = fig.colorbar(cs)

ax.set(xlim=(-0.5, 3.5), ylim=(-0.5, 3.5),
       title='用户指定的带空洞的填充等高线')

总结

在本实验中,我们学习了如何使用 Matplotlib 中的 ContourSet 来显示我们自己的等高线和多边形。我们定义了等高线和多边形,创建了绘图,并创建了带空洞的填充等高线。