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

如何将Matplotlib文本框中的:e格式数值转为10^x格式?

简便实现方法(无需正则)

法子一:用Matplotlib自带的格式化工具(推荐)

直接借助Matplotlib的ScalarFormatter,它能自动生成符合LaTeX语法的科学计数法文本,不用自己折腾字符串:

from matplotlib.ticker import ScalarFormatter

# 初始化格式化器,开启数学文本模式
formatter = ScalarFormatter(useMathText=True)
# 可选:设置触发科学计数法的数值范围,比如绝对值小于1e-3或大于1e4时启用
formatter.set_powerlimits((-3, 4))

# 格式化目标数值
formatted_num = formatter.format_data(popt[0])
# 构建LaTeX格式的文本字符串
textst = f"$En_1={formatted_num}$"

# 绘制文本框的代码和原代码一致
plt.text(.950,
         .100,
         textst,
         bbox=props,
         ha='right',
         va='bottom',
         transform=ax.transAxes)

生成的文本会自动渲染为$En_1=5\times 10^{5}$,在图表中显示为带正确上标的En₁=5×10⁵。

法子二:原生字符串拆分(无需额外导入)

要是不想新增导入,直接用Python原生字符串操作就能搞定,步骤简单:

# 将数值转为科学计数法格式的字符串
sci_str = "{0:.4e}".format(popt[0])
# 按'e'拆分出系数和指数部分
coeff, exp_str = sci_str.split('e')
# 转换指数为整数,自动去除前导符号与多余零
exp = int(exp_str)
# 拼接成LaTeX格式的文本
textst = f"$En_1={coeff}\\times 10^{{{exp}}}$"

# 绘制文本框的代码保持不变
plt.text(.950,
         .100,
         textst,
         bbox=props,
         ha='right',
         va='bottom',
         transform=ax.transAxes)

这个方法完全依赖Python原生功能,不用额外依赖库,同样能得到符合要求的上标格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:05:40