简介
在数据可视化中,等高线图通常用于在二维平面上显示三维数据。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() 函数创建掩码等高线图。我们将 x、y 和 z 数组传递给此函数,并根据我们要创建的图表类型将 corner_mask 参数设置为 True 或 False。
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() 函数创建等高线图。最后,我们解读了结果,并观察了启用和禁用角掩码之间的差异。