在我的绘图中使用 Latex 导致图例标签和 y 刻度标签错位

问题描述 投票:0回答:0

我想在我的 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()

这会生成以下图:

Python Plot

图例标签未对齐,y 刻度的标签未与对数刻度的正确刻度对齐。

我试图找到原因,看起来错位是由线引起的:

mpl.rcParams['text.usetex'] = True

注释掉那部分,会产生一个情节,其中所有内容都按照我的意愿对齐,但如果没有它,我也不能再使用 SI 单位了。 有谁知道为什么会导致这种错位以及我该如何解决? 似乎有很多其他方法可以在 python 图中实现 Latex 语法,但我无法在标签中成功使用 SI 单位。

python matplotlib latex
© www.soinside.com 2019 - 2024. All rights reserved.