文本基线比较

PythonPythonBeginner
立即练习

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

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将使用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。我们为每个子图添加了四个测试字符串,每个字符串都有不同的样式和位置。最后,我们显示了图表以比较文本基线。