简介
在本教程中,我们将学习如何使用 Matplotlib 库中的contourf方法创建填充等高线图。我们将介绍如何使用自动和显式级别创建填充等高线,以及如何设置颜色映射和扩展设置。
虚拟机提示
虚拟机启动完成后,点击左上角切换到笔记本标签以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,请随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。
导入库并创建数据
首先,我们需要导入必要的库并创建一些要绘制的数据。
import matplotlib.pyplot as plt
import numpy as np
## 创建数据
origin = 'lower'
delta = 0.025
x = y = np.arange(-3.0, 3.01, delta)
X, Y = np.meshgrid(x, y)
Z1 = np.exp(-X**2 - Y**2)
Z2 = np.exp(-(X - 1)**2 - (Y - 1)**2)
Z = (Z1 - Z2) * 2
使用自动级别创建填充等高线
接下来,我们将使用自动级别创建一个填充等高线图。我们将使用contourf方法,并将cmap参数设置为plt.cm.bone以指定颜色映射。我们还将使用contour方法添加等高线,并传入用于填充等高线的等高线级别的一个子集。
## 使用自动级别创建填充等高线
fig, ax = plt.subplots()
CS = ax.contourf(X, Y, Z, 10, cmap=plt.cm.bone, origin=origin)
CS2 = ax.contour(CS, levels=CS.levels[::2], colors='r', origin=origin)
## 添加标题、轴标签和颜色条
ax.set_title('使用自动级别创建填充等高线')
ax.set_xlabel('X 标签')
ax.set_ylabel('Y 标签')
cbar = fig.colorbar(CS)
cbar.ax.set_ylabel('Z 标签')
cbar.add_lines(CS2)
## 显示图形
plt.show()
使用显式级别创建填充等高线
现在,我们将使用显式级别创建一个填充等高线图。我们将使用contourf方法,并将levels参数设置为一个值列表,以指定等高线级别。我们还将颜色映射设置为一个颜色列表,并将extend参数设置为'both',以显示超出级别范围的值。
## 使用显式级别创建填充等高线
fig, ax = plt.subplots()
levels = [-1.5, -1, -0.5, 0, 0.5, 1]
CS = ax.contourf(X, Y, Z, levels, colors=('r', 'g', 'b'),
origin=origin, extend='both')
CS2 = ax.contour(X, Y, Z, levels, colors=('k',),
linewidths=(3,), origin=origin)
## 添加标题、轴标签和颜色条
ax.set_title('使用显式级别创建填充等高线')
ax.set_xlabel('X 标签')
ax.set_ylabel('Y 标签')
cbar = fig.colorbar(CS)
cbar.ax.set_ylabel('Z 标签')
## 显示图形
plt.show()
设置颜色映射和扩展设置
最后,我们将设置颜色映射和扩展设置。我们将使用with_extremes方法为低于和高于级别范围的值设置颜色。我们还将创建四个子图,以展示四种可能的extend设置:'neither'、'both'、'min'和'max'。
## 设置颜色映射和扩展设置
extends = ["neither", "both", "min", "max"]
cmap = plt.colormaps["winter"].with_extremes(under="magenta", over="yellow")
## 创建具有不同扩展设置的子图
fig, axs = plt.subplots(2, 2, layout="constrained")
for ax, extend in zip(axs.flat, extends):
cs = ax.contourf(X, Y, Z, levels, cmap=cmap, extend=extend, origin=origin)
fig.colorbar(cs, ax=ax, shrink=0.9)
ax.set_title("extend = %s" % extend)
ax.locator_params(nbins=4)
## 显示图形
plt.show()
总结
在本教程中,我们学习了如何使用 Matplotlib 库中的contourf方法创建填充等高线图。我们介绍了如何使用自动和显式级别创建填充等高线,以及如何设置颜色映射和扩展设置。掌握这些技能后,你就可以为你的数据创建出美观且信息丰富的等高线图。