在 Matplotlib 中修改坐标格式化器

Beginner

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

简介

Matplotlib 是一个用于在 Python 中进行数据可视化的库。它提供了广泛的工具来创建各种类型的绘图、图表和图形。Matplotlib 的一个有用特性是能够自定义坐标格式化器。在本实验中,我们将介绍在 Matplotlib 中修改坐标格式化器的步骤,以便根据给定的 x 和 y 报告最近像素的图像“z”值。

虚拟机使用提示

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

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

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

导入必要的模块

首先,我们需要导入必要的模块。在这种情况下,我们将导入 matplotlib.pyplotnumpy

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 函数来修改坐标格式化器。