简介
Matplotlib 是一个用于 Python 的数据可视化库。它提供了各种工具,可在 Python 中创建静态、动画和交互式可视化。在本实验中,我们将学习如何使用 Matplotlib 中的 pcolormesh 和 pcolor 函数来可视化二维网格。
虚拟机使用提示
虚拟机启动完成后,点击左上角切换到“笔记本”标签页,以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们会及时为你解决问题。
导入所需库
首先,我们需要通过运行以下代码块来导入所需的库 Matplotlib 和 NumPy:
import matplotlib.pyplot as plt
import numpy as np
创建用于可视化的数据
接下来,我们将创建一个用于可视化的二维网格。我们可以使用 NumPy 中的 meshgrid 函数来创建网格。meshgrid 函数根据两个向量 x 和 y 创建一个点的网格,这两个向量表示网格点的坐标。我们将使用以下代码块创建一个 5x5 点的网格:
nrows = 5
ncols = 5
x = np.arange(ncols + 1)
y = np.arange(nrows + 1)
X, Y = np.meshgrid(x, y)
Z = X + Y
平面着色
Matplotlib 中的 pcolormesh 函数可以可视化二维网格。假设最少的网格规范是 shading='flat',并且如果网格在每个维度上比数据大一个,即形状为 (M+1, N+1)。在这种情况下,X 和 Y 指定了用 Z 中的值进行着色的四边形的角。我们可以使用以下代码块来可视化该网格:
fig, ax = plt.subplots()
ax.pcolormesh(X, Y, Z, shading='flat', cmap='viridis')
ax.set_title('Flat Shading')
plt.show()
平面着色,形状相同的网格
如果网格在每个维度上与数据的形状相同,我们就不能使用 shading='flat'。从历史上看,在这种情况下 Matplotlib 会默默地丢弃 Z 的最后一行和最后一列,以匹配 Matlab 的行为。如果仍然需要这种行为,只需手动丢弃最后一行和最后一列。我们可以使用以下代码块来可视化该网格:
fig, ax = plt.subplots()
ax.pcolormesh(x, y, Z[:-1, :-1], shading='flat', cmap='viridis')
ax.set_title('Flat Shading, Same Shape Grid')
plt.show()
最近点着色,形状相同的网格
通常情况下,当用户使 X、Y 和 Z 具有相同形状时,他们并不是想丢弃一行和一列数据。对于这种情况,Matplotlib 允许使用 shading='nearest',并将着色的四边形以网格点为中心。如果传递了形状不正确的网格并使用 shading='nearest',则会引发错误。我们可以使用以下代码块来可视化该网格:
fig, ax = plt.subplots()
ax.pcolormesh(X, Y, Z, shading='nearest', cmap='viridis')
ax.set_title('Nearest Shading, Same Shape Grid')
plt.show()
自动着色
用户可能希望代码自动选择使用哪种方式,在这种情况下,shading='auto' 将根据 X、Y 和 Z 的形状决定使用 flat 还是 nearest 着色。我们可以使用以下代码块来可视化该网格:
fig, ax = plt.subplots()
ax.pcolormesh(x, y, Z, shading='auto', cmap='viridis')
ax.set_title('Auto Shading')
plt.show()
高洛德着色
也可以指定 高洛德着色,其中四边形内的颜色在网格点之间进行线性插值。X、Y、Z 的形状必须相同。我们可以使用以下代码块来可视化该网格:
fig, ax = plt.subplots()
ax.pcolormesh(X, Y, Z, shading='gouraud', cmap='viridis')
ax.set_title('Gouraud Shading')
plt.show()
总结
在本实验中,我们学习了如何使用 Matplotlib 中的 pcolormesh 和 pcolor 函数来可视化二维网格。我们了解了不同的着色选项,包括 flat、nearest、auto 和 gouraud。我们还学习了如何使用 NumPy 中的 meshgrid 函数创建二维网格。