如何在Python中将浮点表示法转换为10种科学表示法的功效?

Gia*_*omo 4 python floating-point matplotlib legend

在中Python,我的值0.000001,0.00001,0.0001,....,1.0存储在my_Arraynp.array)中。对于这些值中的每一个,我都需要在绘图中标记一条曲线并将其存储在图例中,val = 10e-6而不是val = 0.000001。如果使用第二个版本,则会自动存储第二个版本(用于i'th值):

matplolib.pyplot.plot(...., label = 'val = ' + str(my_Array[i]))
Run Code Online (Sandbox Code Playgroud)

是否有将浮点表示法转换为10表示法科学能力的函数?

Imp*_*est 6

您可以结合使用a ScalarFormatter和a FuncFormatter来将值格式化为mathtext。即代替0.01或1e-2它看起来像在此处输入图片说明

import matplotlib.pyplot as plt
import matplotlib.ticker as mticker

vals = [0.000001,0.00001,0.0001,0.01,1.0]

f = mticker.ScalarFormatter(useOffset=False, useMathText=True)
g = lambda x,pos : "${}$".format(f._formatSciNotation('%1.10e' % x))
fmt = mticker.FuncFormatter(g)

fig, ax = plt.subplots()
for i,val in enumerate(vals):
    ax.plot([0,1],[i,i], label="val = {}".format(fmt(val)))

ax.legend()    
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

这与“ 我可以在matplotlib图的轴上显示小数位和科学计数法”中的概念基本相同,而不是轴,而是图例。

  • AttributeError:“ScalarFormatter”对象没有属性“_formatSciNotation” (5认同)