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,提问作者Владимир Кузовкин
相关产品推荐
相关产品推荐

