使用 Matplotlib 绘制掩码等高线图

PythonPythonBeginner
立即练习

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

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

简介

在数据可视化中,等高线图通常用于在二维平面上显示三维数据。Matplotlib 是 Python 中广泛使用的绘图库,它提供了创建不同类型图表的功能,包括等高线图。在本实验中,我们将学习如何使用 Matplotlib 创建掩码等高线图,以及如何说明启用和禁用角掩码之间的区别。

虚拟机使用提示

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

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

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

导入所需库

要使用 Matplotlib 创建掩码等高线图,我们需要导入以下库:

  • numpy:一个用于 Python 编程语言的库,提供对大型多维数组和矩阵的支持。
  • matplotlib.pyplot:一组函数,为创建不同类型的图表提供了一个简单的接口。
import matplotlib.pyplot as plt
import numpy as np

创建绘图数据

在这一步中,我们将创建用于在等高线图上绘制的数据。我们使用 np.meshgrid() 函数创建一个点网格,然后使用正弦和余弦函数计算 z 值。

## 要绘制的数据。
x, y = np.meshgrid(np.arange(7), np.arange(10))
z = np.sin(0.5 * x) * np.cos(0.52 * y)

对数据进行掩码处理

在这一步中,我们将使用布尔掩码对一些 z 值进行掩码处理。我们使用 np.zeros_like() 函数创建一个 mask 数组,然后将一些值设置为 True 以对其进行掩码处理。

## 对各种z值进行掩码处理。
mask = np.zeros_like(z, dtype=bool)
mask[2, 3:5] = True
mask[3:5, 4] = True
mask[7, 2] = True
mask[5, 0] = True
mask[0, 6] = True
z = np.ma.array(z, mask=mask)

创建图表

在这一步中,我们将使用 contourf() 函数创建掩码等高线图。我们将 xyz 数组传递给此函数,并根据我们要创建的图表类型将 corner_mask 参数设置为 TrueFalse

corner_masks = [False, True]
fig, axs = plt.subplots(ncols=2)
for ax, corner_mask in zip(axs, corner_masks):
    cs = ax.contourf(x, y, z, corner_mask=corner_mask)
    ax.contour(cs, colors='k')
    ax.set_title(f'{corner_mask=}')

    ## 绘制网格。
    ax.grid(c='k', ls='-', alpha=0.3)

    ## 用红色圆圈指示掩码点。
    ax.plot(np.ma.array(x, mask=~mask), y, 'ro')

plt.show()

结果解读

在这一步中,我们将解读掩码等高线图的结果。我们可以观察到,corner_mask 参数控制着图表的角点是否被掩码。当 corner_mask 设置为 True 时,等高线图的角点被掩码;而当它设置为 False 时,角点不被掩码。我们还可以看到,被掩码的点由红色圆圈表示。

总结

在本实验中,我们学习了如何使用Matplotlib创建掩码等高线图。我们首先导入所需的库,然后创建要绘制的数据。接着,我们使用布尔掩码对一些 z 值进行掩码处理,并使用 contourf() 函数创建等高线图。最后,我们解读了结果,并观察了启用和禁用角掩码之间的差异。