我想在我的 python 图中使用 Latex 语法,以便能够在标题或其他标签中使用 SI 单位包。这是我正在使用的代码的一个最小示例:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams['text.usetex'] = True
mpl.rcParams['text.latex.preamble'] = r'\usepackage{siunitx}'
mpl.rcParams['legend.fontsize'] = 14
mpl.rcParams['xtick.labelsize'] = 15
mpl.rcParams['ytick.labelsize'] = 15
mpl.rcParams['axes.labelsize'] = 18
mpl.rcParams['figure.titlesize'] = 18
DOTSIZE = 3.5
X = np.linspace(0.001,1,1000)
fig = plt.figure(figsize = (10,6))
plt.plot(X, X, label = 'data')
plt.title(r'using SI Units like $\SI{100}{\hertz}$', fontsize = 20)
plt.yscale('log')
plt.xscale('log')
plt.grid(color = 'grey', which = 'both', alpha = 0.4, linestyle = '--', linewidth = 1)
plt.legend()
plt.savefig('test.pdf')
plt.show()
这会生成以下图:
图例标签未对齐,y 刻度的标签未与对数刻度的正确刻度对齐。
我试图找到原因,看起来错位是由线引起的:
mpl.rcParams['text.usetex'] = True
注释掉那部分,会产生一个情节,其中所有内容都按照我的意愿对齐,但如果没有它,我也不能再使用 SI 单位了。 有谁知道为什么会导致这种错位以及我该如何解决? 似乎有很多其他方法可以在 python 图中实现 Latex 语法,但我无法在标签中成功使用 SI 单位。