USETEX基线测试

测试 rcParams["text.latex.preview"] (default: False) ,这是一个已弃用的功能,它依赖于预览.sty Latex 包装,以适当地调整TeX基线。由于Matplotlib的dvi解析器现在可以同时计算基线,因此该功能已被弃用预览.sty;此示例将与 rcParams["text.latex.preview"] (default: False) 在贬值之后。

usetex=False , usetex=True preview=False, usetex=True preview=True
import matplotlib.pyplot as plt
import matplotlib.axes as maxes


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


@maxes.subplot_class_factory
class LatexPreviewSubplot(maxes.Axes):
    """
    A hackish way to simultaneously draw texts with text.latex.preview=True and
    text.latex.preview=False in the same figure.  It does not work with the ps
    backend.
    """

    def __init__(self, *args, preview=False, **kwargs):
        self.preview = preview
        super().__init__(*args, **kwargs)

    def draw(self, renderer):
        with plt.rc_context({"text.latex.preview": self.preview}):
            super().draw(renderer)


def test_window_extent(ax, usetex, preview):

    ax.xaxis.set_visible(False)
    ax.yaxis.set_visible(False)

    test_strings = ["lg", r"$\frac{1}{2}\pi$",
                    r"$p^{3^A}$", r"$p_{3_2}$"]

    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"))

    ax.set_xlim(-0.1, 1.1)
    ax.set_ylim(-.8, 3.9)

    title = f"usetex={usetex}\n"
    if usetex:
        title += f"preview={preview}"
    ax.set_title(title)


fig = plt.figure(figsize=(2 * 3, 6.5))

for i, usetex, preview in [[0, False, False],
                           [1, True, False],
                           [2, True, True]]:
    ax = LatexPreviewSubplot(fig, 1, 3, i + 1, preview=preview)
    fig.add_subplot(ax)
    fig.subplots_adjust(top=0.85)

    test_window_extent(ax, usetex=usetex, preview=preview)


plt.show()

关键词:matplotlib代码示例,codex,python plot,pyplot Gallery generated by Sphinx-Gallery