与 matplotlib 子图不一致的刻度标签字体

Posted

技术标签:

【中文标题】与 matplotlib 子图不一致的刻度标签字体【英文标题】:Inconsistent tick labels font with matplotlib subplots 【发布时间】:2017-07-09 20:24:34 【问题描述】:

我正在使用matplotlib.pyplot.subplots 制作一个绘图网格,并且我希望刻度标签采用 LaTeX 的无衬线字体,但是当我使用子图时,我总是会得到至少一个以 matplotlib 的默认字体呈现的刻度标签.

这是一个 MWE:

import matplotlib.pyplot as plt

fig, axes = plt.subplots(nrows=1, ncols=1)
x = [1,2,3,4,5]
plt.plot(x)
plt.rc('text', usetex=True)
plt.rc('font', family='sans-serif')
plt.show()

如果您注释掉 fig, axes = plt.subplots 行,刻度标签将按原样显示。

我正在使用 python 3.6.0 版和 matplotlib 2.0.0 版

【问题讨论】:

【参考方案1】:

对 rcParam 的更改应尽快进行,并且必须在创建它们影响的对象之前进行。

因此,将 rc 更改放在顶部,可以解决问题:

import matplotlib.pyplot as plt
plt.rc('text', usetex=True)
plt.rc('font', family='sans-serif')

fig, axes = plt.subplots(nrows=1, ncols=1)
x = [1,2,3,4,5]
plt.plot(x)

plt.show()

【讨论】:

跟进问题(感谢您的回答):为什么plt.textplt.xlabel 不会以LaTeX 字体显示?假设程序与您的 asnwer 中的程序相同。 就我而言,他们确实如此。对我来说,问题似乎在于刻度标签不服从 sans-serif 属性。

以上是关于与 matplotlib 子图不一致的刻度标签字体的主要内容,如果未能解决你的问题,请参考以下文章

删除 Matplotlib,Python 中某些子图的 y 轴刻度标签

如何更改 matplotlib 中轴对象刻度的字体大小 [重复]

Matplotlib 使刻度标签字体变小

如何更改 Matplotlib 中颜色条刻度标签的字体大小?

matplotlib绘制图表,设置刻度标签最大最小刻度字体大小,label位置刻度轴箭头等

Matplotlib:指定刻度标签的浮点格式