我的 python 脚本中有一个数字,我想将其用作 matplotlib 中绘图标题的一部分。是否有将浮点数转换为格式化的 TeX 字符串的函数?
基本上,
str(myFloat)
返回
3.5e+20
但我想要
$3.5 \times 10^{20}$
或者至少让 matplotlib 像第二个字符串一样格式化浮点数。我也被困在使用 python 2.4,所以特别感谢在旧版本中运行的代码。
我的 python 脚本中有一个数字,我想将其用作 matplotlib 中绘图标题的一部分。是否有将浮点数转换为格式化的 TeX 字符串的函数?
基本上,
str(myFloat)
返回
3.5e+20
但我想要
$3.5 \times 10^{20}$
或者至少让 matplotlib 像第二个字符串一样格式化浮点数。我也被困在使用 python 2.4,所以特别感谢在旧版本中运行的代码。
使用旧的 stype 格式:
print r'$%s \times 10^{%s}$' % tuple('3.5e+20'.split('e+'))
使用新格式:
print r'${} \times 10^{{{}}}$'.format(*'3.5e+20'.split('e+'))
You can do something like:
ax.set_title( "${0} \\times 10^{{{1}}}$".format('3.5','+20'))
in the old style:
ax.set_title( "$%s \\times 10^{%s}$" % ('3.5','+20'))
安装num2tex包:
pip install num2tex
并将您的标题格式化为:
ax.set_title('${}$'.format(num2tex(3.5e20)))
或使用以下_repr_latex_()
方法:
ax.set_title(num2tex(3.5e20)._repr_latex_())
这会给你同样的东西。
num2tex
继承自,str
因此该format
函数可以像将其用于字符串一样使用:
ax.set_title('${:.2e}$'.format(num2tex(3.5e20)))
免责声明:我(最近)创建了num2tex
. 它适用于我的工作流程,我现在正试图从可能有兴趣使用它的其他人那里获得反馈。
如果您想使用任意浮点数执行此操作,只需对上一个答案进行简单的阐述。请注意,您需要使用re
包中的拆分来考虑负指数的可能性。
import re
val = 3.5e20
svals = re.split('e+|e-',f'{val:4.2g}')
print(r'${} \times 10^{{{}}}$'.format(*svals))