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

Matplotlib中图例文本与浮点转字符串内容的LaTeX格式统一问题

解决图例中LaTeX格式与数值字体统一的问题

我懂你的困扰——你想让图例里的timestep和后面的时间数值用完全一致的LaTeX字体,但目前拼接的字符串数值还是默认字体,和LaTeX渲染的文字脱节了。问题出在你只把timestep放进了LaTeX环境,数值部分还是普通字符串,没被LaTeX解析。

给你几个简单的解决方案,都能让整个图例文本用统一的LaTeX格式:

方案1:用f-string把整个label包进LaTeX环境(推荐,Python3.6+)

直接把数值插入到LaTeX的标记里,让整个字符串都被LaTeX渲染:

# 按需调整小数位数,比如:.2f保留两位小数,:.1f保留一位
time = f'$timestep\ {start:.2f}$'
# 如果start是字符串类型,先转成float:f'$timestep\ {float(start):.2f}$'

这样timestep和数值都会用LaTeX的字体显示,完美统一。

方案2:用.format()方法(兼容老版本Python)

如果你的Python版本低于3.6,用字符串格式化方法也能达到同样效果:

time = '$timestep\ {:.2f}$'.format(float(start))

方案3:复杂格式(比如科学计数法)

如果时间数值需要用科学计数法,LaTeX也能轻松处理:

time = f'$timestep\ {start:.2e}$'

额外注意:确保Matplotlib开启LaTeX渲染

要让这些LaTeX标记生效,你需要先在代码里开启Matplotlib的LaTeX支持:

import matplotlib.pyplot as plt
plt.rcParams['text.usetex'] = True
plt.rcParams['font.family'] = 'serif'

如果没开这个,即使加了$符号,可能只会把$显示出来,而不会用LaTeX渲染字体。

完整示例代码

import matplotlib.pyplot as plt
import numpy as np

# 开启LaTeX渲染
plt.rcParams['text.usetex'] = True
plt.rcParams['font.family'] = 'serif'

fig, ax = plt.subplots()
x = np.linspace(0, 10, 100)
start = 0.5  # 假设这是你的时间值

# 生成统一LaTeX格式的图例标签
time_label = f'$timestep\ {start:.2f}$'
ax.plot(x, np.sin(x), label=time_label, linewidth=3)

ax.legend()
plt.show()

这样运行后,图例里的timestep 0.5就会全部是LaTeX的标准字体,再也不会出现字体不一致的问题啦~

内容的提问来源于stack exchange,提问作者MMM

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 04:07:31