使用 Python 的 Matplotlib 库在颜色条图标题中进行 LaTeX 渲染的问题

问题描述 投票:0回答:1

我在使用 Python 的 Matplotlib 库绘制以下颜色条图时遇到标题问题。有两个次要情节。第一个标题效果很好,即 LaTeX 渲染成功完成。但是,它会返回第二个错误。

    fig, axs = plt.subplots(1, 2, figsize=(24, 10))
    
    
    c1 = axs[0].contourf(x, y, zT, 60, cmap='seismic', vmin=-2.5, vmax=2.5)
    axs[0].set_title(r'$\zeta_T$ at t={}'.format(l))
    fig.colorbar(c1, ax=axs[0])

    
    c2 = axs[1].contourf(x, y, bcv, 40, cmap='seismic', vmin=-0.25, vmax=0.25)
    axs[1].set_title(r'$\sqrt{U_c^2 + V_c^2}$ at t={}'.format(l))  # Adjusted title
    fig.colorbar(c2, ax=axs[1])

错误如下:

KeyError                                  Traceback (most recent call last)
Cell In[27], line 80
     79 c2 = axs[1].contourf(x, y, bcv, 40, cmap='seismic', vmin=-0.25, vmax=0.25)
---> 80 axs[1].set_title(r'$\sqrt{U_c^2 + V_c^2}$ at t={}'.format(l))  # Adjusted title
     81 fig.colorbar(c2, ax=axs[1])

KeyError: 'U_c^2 + V_c^2'

我想知道为什么 LaTeX 命令

$\sqrt{U_c^2+V_c^2}$
在标题中不起作用。为什么 LaTeX 渲染在 Matplotlib 中不起作用?

我尝试通过多种方式修复它,但我始终收到“KeyError”。我使用

plt.rc('text', usetex=True)
在 Matplotlib 中启用 LaTeX 渲染。但它也不起作用。我想解决 Matplotlib 中的 LaTeX 渲染问题。

python matplotlib latex rendering colorbar
1个回答
0
投票

这种乳胶格式与 python

.format()
方法的功能发生冲突。 后者在字符串中寻找大括号
{...}
并对其进行操作,但是

中有两组大括号
    r'$\sqrt{U_c^2 + V_c^2}$ at t={}'

我建议您将其拆分为两个字符串,仅使用第二个字符串的格式方法

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

这是一个类似字符的完整工作示例(我没有你的数据)。

import matplotlib.pyplot as plt
import numpy as np
plt.rc('text', usetex=True)

x = np.linspace(-np.pi, np.pi, 100)
t = 3.0

fig, ax = plt.subplots()
ax.plot(x, np.sqrt(x**2+1))
ax.set_title(r'$\sqrt{x^2 + 1}$' + ' at {}'.format(t))
© www.soinside.com 2019 - 2024. All rights reserved.