我创造了利用Matlab更改X轴在matplotlib
使用matplotlib该地块规模,X-轴距吸引大批如100000,200000 300000我想有像1 ,2,3和10^5来表明它实际上是100000,200000,300000.
有没有一种简单的方法来在matplotlib中创建这样的比例尺?
我创造了利用Matlab更改X轴在matplotlib
使用matplotlib该地块规模,X-轴距吸引大批如100000,200000 300000我想有像1 ,2,3和10^5来表明它实际上是100000,200000,300000.
有没有一种简单的方法来在matplotlib中创建这样的比例尺?
尝试使用matplotlib.pyplot.ticklabel_format
:
import matplotlib.pyplot as plt
...
plt.ticklabel_format(style='sci', axis='x', scilimits=(0,0))
这适用科学记数法(即a x 10^b
)到您的x轴刻度线
的scalar formatter支持收集的指数。该文档如下:
类matplotlib.ticker.ScalarFormatter(useOffset =真, useMathText =假,useLocale =无)碱:matplotlib.ticker.Formatter
蜱位置是一个普通的旧数。如果useOffset == True且数据范围远小于数据平均值,则将确定一个偏移量 ,以使刻度标签有意义。科学 符号用于数据< 10^-n或数据> = 10^m,其中n和m是使用set_powerlimits((n,m))设置的功率限制。 的默认值由axes.formatter.limits rc参数控制。
你的技术是:
xfmt = ScalarFormatter()
xfmt.set_powerlimits((-3,3)) # Or whatever your limits are . . .
{{ Make your plot }}
gca().xaxis.set_major_formatter(xfmt)
要获得格式x10^5
显示的指数,与useMathText=True
实例化ScalarFormatter。
您还可以使用:
xfmt.set_useOffset(10000)
为了得到这样的结果:
我喜欢这个解决方案,但我更喜欢'x10^4'而不是'1e4' – Eagle 2012-07-20 13:36:21
我同意。我相信这是可能的,但我不知道如何。 – 2012-07-27 12:58:02
用'useMathText = True'实例化ScalarFormatter以获得'x10^4'。 – 2015-03-06 16:39:48
我找到简单的解决方案
pylab.ticklabel_format(axis='y',style='sci',scilimits=(1,4))
这不是对你的原始问题的回答,而是你在问题主体中的其中一个查询。
小序言,让自己的命名似乎并不奇怪:
import matplotlib
from matplotlib import rc
from matplotlib.figure import Figure
ax = self.figure.add_subplot(111)
正如所提到的,您可以使用ticklabel_format指定matplotlib应该用科学计数法或大或小的值:
ax.ticklabel_format(style='sci',scilimits=(-3,4),axis='both')
您可以使用rcParams中的标志(来自matplotlib import rcParams)或通过直接设置它们来影响显示方式。我还没有发现“1E”和“X10 ^”科学记数法比之间改变一个更优雅的方式:
ax.xaxis.major.formatter._useMathText = True
这应该给你更多的Matlab的ESC,确实可以说是更好的外观。我认为以下应该做同样的:
rc('text', usetex=True)
是啊,它不漂亮,但它的作品,谢谢! – 2017-02-28 07:43:56
它仍然有效:-) – uhoh 2018-02-16 02:29:43
工作,谢谢。 – Eagle 2012-07-20 13:06:37
是否可以添加偏移量? (例如,代替0.0,0.5,1.0,1.5,...和x 10^b,它将是0,5,10,15,...和x 10^{b-1}) – Eagle 2012-07-20 13:20:22
'ticklabel_format'也是一个方法的轴对象,你可以尝试像 'ax.ticklabel_format(style ='sci',axis ='x',scilimits =(0,0))' – Covich 2016-03-22 10:47:33