从值列表创建刻度标签

Beginner

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

简介

在本教程中,你将学习如何使用 Matplotlib 根据值列表创建刻度标签。使用.Axes.set_xticks时,刻度标签会设置在当前选定的刻度上。然而,有时让 Matplotlib 动态选择刻度的数量及其间距会更好。在这种情况下,你可能希望根据刻度处的值来确定刻度标签。本教程将向你展示如何做到这一点。

虚拟机使用提示

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

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

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

导入必要的库

我们首先导入本教程所需的库,即来自matplotlib.tickermatplotlib.pyplotMaxNLocator

import matplotlib.pyplot as plt
from matplotlib.ticker import MaxNLocator

创建一个图形和轴对象

接下来,我们使用matplotlib.pyplot中的subplots()方法创建一个图形和轴对象。

fig, ax = plt.subplots()

创建 x 和 y 数据

我们使用 Python 内置的 range 函数中的 range() 方法来创建 x 和 y 数据。

xs = range(26)
ys = range(26)

创建一个标签列表

我们使用list()方法将一串字母转换为字符列表,从而创建一个标签列表。

labels = list('abcdefghijklmnopqrstuvwxyz')

创建一个格式化函数

我们创建一个格式化函数,该函数根据刻度处的值确定刻度标签。如果刻度值是xs范围内的整数,则返回labels列表中对应的标签。否则,返回一个空字符串。

def format_fn(tick_val, tick_pos):
    if int(tick_val) in xs:
        return labels[int(tick_val)]
    else:
        return ''

设置刻度格式化器和定位器

我们使用set_major_formatter()方法将 x 轴刻度格式化器设置为在步骤 5 中创建的格式化函数。我们还将 x 轴刻度定位器设置为MaxNLocator(integer=True),以确保刻度值采用整数值。

ax.xaxis.set_major_formatter(format_fn)
ax.xaxis.set_major_locator(MaxNLocator(integer=True))

创建图表

我们使用axes对象的plot()方法创建图表,并传入xsys数据。

ax.plot(xs, ys)

显示图表

最后,我们使用matplotlib.pyplot中的show()方法来显示图表。

plt.show()

总结

在本教程中,你学习了如何使用 Matplotlib 从值列表创建刻度标签。我们首先创建了一个图形和轴对象,然后创建了 x 和 y 数据,最后创建了一个标签列表。接着,我们创建了一个格式化函数,该函数根据刻度处的值确定刻度标签,并设置了刻度格式化器和定位器。最后,我们创建并显示了图表。