文本基线比较

Beginner

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

简介

在本实验中,我们将使用 Matplotlib 库比较为数学文本(mathtext)和使用 TeX(usetex)计算的文本基线。我们将创建一个包含两个子图的图表,一个使用 mathtext,另一个使用 usetex。每个子图将显示四个具有不同样式和位置的测试字符串。

虚拟机提示

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

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

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

导入必要的库

我们需要导入 matplotlib.pyplot 库来创建图表。

import matplotlib.pyplot as plt

设置 Matplotlib 字体

我们需要设置用于 Matplotlib 文本的字体。我们将使用 Computer Modern 字体,并将其设置为 Matplotlib 的默认字体。

plt.rcParams.update({"mathtext.fontset": "cm", "mathtext.rm": "serif"})

创建子图

我们将创建一个包含两个子图的图形,一个使用数学文本(mathtext),另一个使用 TeX(usetex)。我们将使用 subplots() 方法来创建子图。

fig, axs = plt.subplots(1, 2, figsize=(2 * 3, 6.5))

向图表中添加测试字符串

我们将为每个子图添加四个测试字符串,每个字符串都有不同的样式和位置。我们将使用 text() 方法将文本添加到子图中。

test_strings = ["lg", r"$\frac{1}{2}\pi$", r"$p^{3^A}$", r"$p_{3_2}$"]
for ax, usetex in zip(axs, [False, True]):
    ax.axvline(0, color="r")
    for i, s in enumerate(test_strings):
        ax.axhline(i, color="r")
        ax.text(0., 3 - i, s,
                usetex=usetex,
                verticalalignment="baseline",
                size=50,
                bbox=dict(pad=0, ec="k", fc="none"))

设置图表的范围和标签

我们将设置图表的范围和标签,以匹配预期的输出。

for ax in axs:
    ax.set(xlim=(-0.1, 1.1), ylim=(-.8, 3.9), xticks=[], yticks=[])
    ax.set_title(f"usetex={ax.usetex}\n")

显示图表

我们将使用 show() 方法来显示图表。

plt.show()

总结

在本实验中,我们学习了如何使用 Matplotlib 比较为数学文本(mathtext)和 TeX(usetex)计算的文本基线。我们创建了一个包含两个子图的图表,一个使用数学文本,另一个使用 TeX。我们为每个子图添加了四个测试字符串,每个字符串都有不同的样式和位置。最后,我们显示了图表以比较文本基线。