科学刻度标签标记调整
我对默认的科学格式化的刻度标签不太满意。例如,
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()
生成的图像中,刻度标签的形式是
这里的问题是,首先我认为 -2.1298x10^1
应该显示为 -21.298
,而且我一般只想看到那些指数是3的倍数的形式(比如 10^3
、10^6
等等,对于 10^0
我希望能隐藏它,直接显示为 -21.298
)。
另外,我希望看到的不是 0.000
和 -0.002
这样的数字,而是 0
和 -2
,这样 10^-3
就可以和 -21.298
合并,这样最终的刻度标签会是
x 10^-3 - 21.298
0
-2
-4
-6
那么,我是不是错过了什么简单的方法来实现这个呢?谢谢大家!
2 个回答
1
ax.ticklabel_format(style='scientific', scilimits=(-1, 2), axis='y',useMathText=True)
将 useMathText=True
设置为真,可以把 1e-3 转换成 10 乘以 -3。
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}'