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

Matplotlib绘制多子图色标图时第二个子图标题LaTeX渲染触发KeyError问题

Matplotlib绘制多子图色标图时第二个子图标题LaTeX渲染触发KeyError问题

嘿,这个坑我之前踩过!咱们来拆解下问题出在哪:

你第二个子图的标题里,LaTeX公式$\sqrt{U_c^2 + V_c^2}$用到了大括号{},但同时你又用了Python的.format(l)来插入时间变量l。Python的字符串格式化机制会把所有{}都识别成需要替换的占位符,它根本分不清这是LaTeX的语法还是自己的格式化标记,所以就去寻找名为'U_c^2 + V_c^2'的键,找不到自然就抛出KeyError了。而第一个标题$\zeta_T$里没有大括号,所以完全没问题。

给你两种简单的解决办法:

方法一:转义大括号(适用.format()写法)

把LaTeX里的每个{}换成{{}},这样Python会将其解析为单个{}传递给LaTeX渲染:

axs[1].set_title(r'$\sqrt{{U_c^2 + V_c^2}}$ at t={}'.format(l))

方法二:改用f-string(Python 3.6+适用)

f-string用起来更直观,同样需要把LaTeX里的{}转义成{{}}:

axs[1].set_title(rf'$\sqrt{{U_c^2 + V_c^2}}$ at t={l}')

这里的rf表示原始f-string,能避免LaTeX里的反斜杠被Python误解析。

这样修改后,Python就不会把LaTeX公式里的大括号当成格式化占位符,LaTeX也能正常渲染出你想要的公式啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 12:04:51