简介
在本教程中,你将学习如何使用 Matplotlib 根据值列表创建刻度标签。使用.Axes.set_xticks时,刻度标签会设置在当前选定的刻度上。然而,有时让 Matplotlib 动态选择刻度的数量及其间距会更好。在这种情况下,你可能希望根据刻度处的值来确定刻度标签。本教程将向你展示如何做到这一点。
虚拟机使用提示
虚拟机启动完成后,点击左上角切换到“笔记本”标签页,以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们会立即为你解决问题。
导入必要的库
我们首先导入本教程所需的库,即来自matplotlib.ticker的matplotlib.pyplot和MaxNLocator。
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()方法创建图表,并传入xs和ys数据。
ax.plot(xs, ys)
显示图表
最后,我们使用matplotlib.pyplot中的show()方法来显示图表。
plt.show()
总结
在本教程中,你学习了如何使用 Matplotlib 从值列表创建刻度标签。我们首先创建了一个图形和轴对象,然后创建了 x 和 y 数据,最后创建了一个标签列表。接着,我们创建了一个格式化函数,该函数根据刻度处的值确定刻度标签,并设置了刻度格式化器和定位器。最后,我们创建并显示了图表。