Matplotlib中的LaTeX标签不一致

4

我试图在matplotlib图表中使用LaTeX标签,但它们的编译结果不一致。如下面的截图所示,不仅坐标轴标签,而且并非所有的x和y刻度都以LaTeX方式呈现。

Python plot with latex labels

上述图表的MWE代码为:

#!/usr/bin/python3

import matplotlib.pyplot as plt

fig = plt.figure()
axes = fig.add_axes([0.1, 0.1, 0.8, 0.8])

# FONT
plt.rc('text', usetex=True)
plt.rc('font', family='serif')

plt.xlabel(r'$y$', fontsize=18)
plt.ylabel(r'$x$',fontsize=18)

# PLOT
axes.plot([1,2,3], [1,4,9], label=r'$x^2$')

# LEGEND
axes.legend(numpoints=1, loc=1, prop={'size':15})

plt.show()

我在Debian系统和macOS上都尝试过,两者均已安装TeX Live 2018。

如何使LaTeX始终呈现所有标签?

(注意:最终我想使用Fourier作为数学字体,使用ebgaramond作为文本字体)

1个回答

2

这与你做事情的顺序有关。在创建图形之前,您需要指定rc参数:

最初的回答:

这个问题与操作步骤的顺序有关。在创建图形之前,您需要先指定rc参数。

import matplotlib.pyplot as plt

plt.rc('text', usetex=True)
plt.rc('font', family='serif')

fig, ax = plt.subplots()

ax.set_xlabel(r'$y$', fontsize=18)
ax.set_ylabel(r'$x$', fontsize=18)

ax.plot([1,2,3], [1,4,9], label=r'$x^2$')

ax.legend(numpoints=1, loc=1, prop={'size':15})

plt.show()

这是您想要的结果:

在此输入图像描述

请注意,我更改了图表创建方式,因为您的轴太小以至于无法显示标签。

"Original Answer"翻译成"最初的回答"

谢谢!不过有趣的是,一些标签为什么会被渲染成LaTeX呢?你知道原因吗? - seyfe
我同意这有点令人困惑。我猜这取决于何时呈现什么内容。但是,这如何导致你所说的行为,我无法说,因为我缺乏足够了解库核心结构的知识。 - Tom de Geus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接