Matplotlib绘图标题如何同时显示LaTeX公式与Python参数值
Matplotlib 标题同时渲染LaTeX符号与动态参数值的实现方法
两种单前缀写法失效的原因:
- 单独使用f-string时,普通字符串会把
\a这类反斜杠开头的组合识别为Python转义字符,传给Matplotlib的字符串里不存在完整的LaTeX命令,因此公式渲染失败 - 单独使用r原始字符串时,反斜杠不会被转义、LaTeX能正常渲染,但r前缀不支持f-string的占位符替换逻辑,动态参数值无法插入
可行方案如下:
- 方案1:使用
rf前缀组合(最推荐,代码可读性最高)
Python 3.6及以上版本支持同时给字符串加r和f前缀,同时保留原始字符串不转义反斜杠、f-string替换占位符的能力。注意:LaTeX语法中所有需要保留的字面量大括号{},都要写成双大括号{{}}做转义,避免被f-string识别为占位符。
示例代码:
import matplotlib.pyplot as plt alpha = 0.73 beta = 1.29 # rf前缀组合,直接插入参数值 title_str = rf"$\alpha$ = {alpha:.2f}, $\beta$ = {beta:.2f}" plt.title(title_str)
如果带LaTeX上下标、分式等需要大括号的场景,写法参考:
# 渲染α₁ = xxx效果时,下标部分的大括号要写双份转义 title_str = rf"$\alpha_{{1}}$ = {alpha:.2f}"
- 方案2:普通f-string手动转义反斜杠
如果运行环境不支持rf前缀组合,可以在普通f-string里把LaTeX的反斜杠写成双反斜杠\\,实现和r-string一致的反斜杠输出效果,同样LaTeX自带的非占位符大括号需要写双大括号转义。
示例代码:
import matplotlib.pyplot as plt alpha = 0.73 beta = 1.29 # 普通f-string,LaTeX反斜杠写双份转义 title_str = f"$\\alpha$ = {alpha:.2f}, $\\beta$ = {beta:.2f}" plt.title(title_str)
踩坑提示:如果出现渲染报错、语法报错,优先检查两个点:一是LaTeX的反斜杠是否正确输出(要么用r前缀避免转义,要么写双反斜杠),二是LaTeX语法里的非占位符大括号是否都写成了双大括号,避免被f-string错误解析为变量占位。
内容的提问来源于stack exchange,提问作者Vadim
相关产品推荐
相关产品推荐

