简介
Matplotlib 是一个用于在 Python 中进行数据可视化的库。它提供了广泛的工具来创建各种类型的绘图、图表和图形。Matplotlib 的一个有用特性是能够自定义坐标格式化器。在本实验中,我们将介绍在 Matplotlib 中修改坐标格式化器的步骤,以便根据给定的 x 和 y 报告最近像素的图像“z”值。
虚拟机使用提示
虚拟机启动完成后,点击左上角切换到“笔记本”标签以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,请随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。
导入必要的模块
首先,我们需要导入必要的模块。在这种情况下,我们将导入 matplotlib.pyplot 和 numpy。
import matplotlib.pyplot as plt
import numpy as np
创建一个随机矩阵
接下来,我们将使用 numpy 创建一个随机矩阵。我们将使用 rand 方法创建一个 5x3 的矩阵,其随机值介于 0 和 1 之间。我们还将设置一个随机种子以确保结果的可重复性。
## Fixing random state for reproducibility
np.random.seed(19680801)
X = 10*np.random.rand(5, 3)
创建一个绘图
现在,我们将使用 Matplotlib axes 类的 imshow 方法创建该矩阵的绘图。
fig, ax = plt.subplots()
ax.imshow(X)
修改坐标格式化器
现在我们将修改坐标格式化器,以便根据给定的 x 和 y 报告最近像素的图像“z”值。这可以通过自定义 ~.axes.Axes.format_coord 函数来实现。
def format_coord(x, y):
col = round(x)
row = round(y)
nrows, ncols = X.shape
if 0 <= col < ncols and 0 <= row < nrows:
z = X[row, col]
return f'x={x:1.4f}, y={y:1.4f}, z={z:1.4f}'
else:
return f'x={x:1.4f}, y={y:1.4f}'
ax.format_coord = format_coord
显示绘图
最后,我们将使用 plt.show() 方法显示绘图。
plt.show()
总结
在本实验中,我们学习了如何在 Matplotlib 中修改坐标格式化器,以便根据给定的 x 和 y 报告最近像素的图像“z”值。我们还学习了如何使用 imshow 方法创建随机矩阵的绘图,以及如何自定义 ~.axes.Axes.format_coord 函数来修改坐标格式化器。