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

Python中Matplotlib调用LaTeX公式报错“Missing $ inserted”的解决方法

解决Matplotlib中LaTeX分式公式渲染报错的问题

你遇到的这个报错,核心原因是Python字符串的转义机制和LaTeX的语法冲突了。

在Python里,\是特殊的转义字符,当你直接写$\frac{1}{2}$时,Python会把\f解析成一个转义序列(这里是换页符,完全不是我们要传给LaTeX的内容),导致最终传递给LaTeX的代码被破坏,从而触发了Missing $ inserted的错误。

两种快速解决方法

方法1:使用原始字符串(推荐)

在字符串前面加上r,告诉Python不要解析字符串里的任何转义字符,直接把内容原封不动传给LaTeX:

import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt

plt.clf()
plt.rc('text', usetex=True)
plt.rcParams["figure.figsize"] = (8, 5)
plt.rc('font', **{'family':'serif', 'serif':['Computer Modern Roman'], 'size': 16})
plt.axis("off")
# 用r开头定义原始字符串
plt.text(0.5, 0.5, r"$\frac{1}{2}\cdot \frac{2}{3}\cdot \frac{3}{4} $")
plt.show()

方法2:手动转义反斜杠

把每个\都写成\\,让Python把它当成普通的反斜杠字符传递给LaTeX:

import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt

plt.clf()
plt.rc('text', usetex=True)
plt.rcParams["figure.figsize"] = (8, 5)
plt.rc('font', **{'family':'serif', 'serif':['Computer Modern Roman'], 'size': 16})
plt.axis("off")
# 把\转义为\\
plt.text(0.5, 0.5, "$\\frac{1}{2}\\cdot \\frac{2}{3}\\cdot \\frac{3}{4} $")
plt.show()

额外注意事项

别忘了确保你的系统已经安装了完整的LaTeX环境(比如TeX Live、MiKTeX或者MacTeX),因为Matplotlib的usetex=True是依赖系统的LaTeX工具链来渲染公式的,如果没装的话,即使代码正确也会报错哦。

内容的提问来源于stack exchange,提问作者Владимир Кузовкин

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 17:48:14