科学刻度标签符号调整

时间:2014-05-30 20:31:35

标签: python numpy matplotlib plot

我对刻度标签的默认科学格式不完全满意。例如,

import numpy as np
import pylab

pylab.rcParams['text.usetex'] = True
pylab.ticklabel_format(style='sci')

pylab.figure(1)
pylab.clf()
pylab.scatter(range(10),np.linspace(-21.305,-21.300,10))
pylab.show()

给出一张带有表格的标签的图片

enter image description here

这里的错误首先是-2.1298x10^1应该在我看来-21.298,而且一般来说我只希望看到只能用3整除的指数(10^310^6等,在10^0的情况下,我想将其隐藏在-21.298)中。

此外,我希望代替0.000-0.0020-2,以便将指数10^-3包括在内-21.298以便总共将标记符号

   x 10^-3 - 21.298
 0
-2
-4
-6

现在,我错过了一些简单的方法吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用ScalarFormatter

来实现它
from matplotlib.ticker import ScalarFormatter

sf = ScalarFormatter()
sf.set_scientific(True)
sf.set_powerlimits((-0.00001, 0.00001))

ax = pylab.gca()
ax.yaxis.set_major_formatter(sf)
pylab.show()

您可以通过将数字传递给format_data()来测试格式化程序对给定数字的作用:

sf.format_data(0.002)
#'2{\\times}10^{-3}'