Matplotlib 等高线可视化

PythonPythonBeginner
立即练习

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

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

简介

本实验将指导你如何使用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来显示我们自己的等高线和多边形。我们定义了等高线和多边形,创建了绘图,并创建了带空洞的填充等高线。