如果我执行以下操作:
print("{:.0e}".format(2500000000000000000))
然后我出去:2e+18
我怎样才能将此输出改为 2x10^18(指数正确上标)。
我知道使用 ticker 你可以使用 MathText=True 来改变输出,但这似乎不适用于字符串格式。
编辑:对不起各位,我试图简化这个问题,认为它可以解决问题。我正在尝试对轴上的刻度线进行此更改:
xticklabels[-1] = '{0:.0e}'.format(xticklabels[-1]).replace('e+','x10^')
这按照@progo 的建议工作,但不会在指数上标。
请您参考如下方法:
愚蠢的解决方案:
print("{0:.0e}".format(2500000000000000000).replace('e+', 'x10^'))
=> 2x10^18
TeX 版本:
def to_TeX(num):
num = "{0:.0e}".format(num)
mantissa, exponent = num.split('e')
exponent = int(exponent)
return "{0} \times 10^{{{1}}}".format(mantissa, exponent)
>>> to_TeX(1.8e21)
'2 \times 10^{21}'
