matplotlib轴刻度标签:获取尾数和指数

时间:2014-02-21 02:44:49

标签: python matplotlib floating-point

有没有办法分别得到轴刻度标签的尾数和指数,以便我可以操纵它们的显示方式?我需要它们看起来像" 5x10 -9 "而不是通常的科学记数法" 5.0e-9"。

如果我在gnuplot中这样做,我会做类似

的事情
set format y "%2.0t{/Symbol \327}10^{%L}"

%2.0t让我得到了尾数,而%L让我得到了指数。我怎样才能在matplotlib中做同样的事情?

谢谢

2 个答案:

答案 0 :(得分:1)

Matplotlib使用所谓的定位器和格式化程序,它们(独立地)定位刻度并标记它们(Documentation)。标准ScalarFormatter需要一个额外的关键字参数(useMathText),它完全符合您的要求。

使用它:

 # import the tickers
 import matplotlib.ticker as mticker

 # your plotting code 

 # create a new formatter and use it on the y-axis
 formatter = mticker.ScalarFormatter(useMathText=True)
 ax.yaxis.set_major_formatter(formatter)

我稍微详细地回答了一个类似的问题here

答案 1 :(得分:0)

如何使用str.split

In [242]: x
Out[242]: 5e-09

In [243]: '{}*10^{}'.format(*map(int, str(x).split('e')))
Out[243]: '5*10^-9'