You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Python绘图的字体与LaTeX文本字体保持一致?

如何让Python绘图的字体与LaTeX文本字体保持一致?

嗨,这个问题我做学术绘图时碰到过好多次,毕竟论文里图和正文字体不统一看着真的很别扭!如果你用的是Matplotlib(Python最常用的绘图库),下面这几种方法绝对能帮你搞定字体一致性的问题:

方法一:全局启用LaTeX渲染(最推荐)

这是一劳永逸的办法,设置一次后,整个脚本里的所有绘图元素(标签、标题、刻度、公式)都会用LaTeX的字体渲染,和你的LaTeX文档完全同步。

只需要在导入Matplotlib后,加上这段配置代码:

import matplotlib.pyplot as plt

# 更新全局参数,启用LaTeX并匹配LaTeX字体族
plt.rcParams.update({
    "text.usetex": True,  # 核心设置:让Matplotlib调用LaTeX处理所有文本
    "font.family": "serif",  # 对应LaTeX默认的衬线字体(比如Computer Modern)
    # 如果你LaTeX用了特定字体(比如Times New Roman),可以指定具体字体
    # "font.serif": ["Times New Roman"],
})

# 正常绘图即可,所有文本自动匹配LaTeX字体
fig, ax = plt.subplots()
ax.plot([1, 2, 3], [4, 1, 3])
ax.set_xlabel('样本编号 $n$')  # 公式也会和LaTeX里的格式完全一致
ax.set_ylabel('测量值 $y$')
ax.set_title('实验结果对比')
plt.show()

解释下:text.usetex: True会让Matplotlib调用你系统里的LaTeX环境(比如TeX Live、MikTeX)渲染文本,所以字体、公式格式都会和你的LaTeX文档完全匹配。如果你的LaTeX用无衬线字体,把font.family改成sans-serif,再对应设置sans-serif的字体列表就行。

方法二:局部指定LaTeX渲染(适合部分文本调整)

如果你不想全局修改,只想给个别标签、标题单独用LaTeX字体,也可以在设置文本时直接加参数:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot([1, 2, 3], [4, 1, 3])

# 对单个标签启用LaTeX渲染,注意加r前缀避免转义
ax.set_xlabel(r'\textbf{样本编号} $\sum_{i=1}^n x_i$', usetex=True)
ax.set_ylabel(r'\textit{测量值} $y = ax + b$', usetex=True)
plt.show()

这里的r前缀很关键,能让Python把字符串当成原始字符串处理,避免LaTeX的反斜杠被转义。usetex=True会让这行文本单独用LaTeX渲染。

几个要注意的小细节

  • 确保你的电脑上已经安装了LaTeX环境,不然Matplotlib调用LaTeX渲染会报错。
  • 如果你用Jupyter Notebook,记得在开头加上%matplotlib inline(或%matplotlib notebook),再设置rcParams才会生效。
  • 要是你用Seaborn绘图,它基于Matplotlib开发,上面的设置完全适用,只需要在导入Seaborn前后配置Matplotlib参数就行。

这样设置后,你画的图里的文字就和LaTeX正文的字体完全一致啦,再也不用纠结格式不统一的问题了!

备注:内容来源于stack exchange,提问作者Light

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 08:58:10