Python 如何将图形轴转换为标准形式

Python 如何将图形轴转换为标准形式,python,graph,numpy,matplotlib,Python,Graph,Numpy,Matplotlib,我绘制了一个图表,其中y轴上的比例很大(10^6),但此时轴显示的是整数。如何使轴以标准形式显示 range_v=142 max_actual_diff=0 max_ID=0.0 for i in range(0,fev[ind_2008].shape[0]): id_temp=ID[ind_2008[i]] ind_2009_temp=np.where(ID[ind_2009] == id_temp) actual_diff=fev[ind_2008[i]]-fe

我绘制了一个图表,其中y轴上的比例很大(10^6),但此时轴显示的是整数。如何使轴以标准形式显示

range_v=142
max_actual_diff=0
max_ID=0.0

for i in range(0,fev[ind_2008].shape[0]):

    id_temp=ID[ind_2008[i]]

    ind_2009_temp=np.where(ID[ind_2009] == id_temp)
    actual_diff=fev[ind_2008[i]]-fev[ind_2009[ind_2009_temp]]

    if actual_diff > max_actual_diff:
        max_actual_diff=actual_diff
        max_ID=id_temp
    diff=np.abs(fev[ind_2008][i]-fev_p1)
    pdf_t, bins_t=np.histogram(diff,bins=range_v-1,range=(0,range_v))
    if i == 0:
        pdf=pdf_t
        pdf[:]=0.0
    pdf=pdf+pdf_t

print max_actual_diff, max_ID
#plot result
x=[max_actual_diff]*3000001
y=np.arange(0,3.000001e6,1)
bincenters = 0.5*(bins_t[1:]+bins_t[:-1])
fig3=plt.figure()
plt.plot(bincenters,pdf)
plt.plot(x,y)
plt.xlim(0,142)
plt.ylim(0,3e6)
plt.xlabel('Diff in FEV Measurements')
plt.ylabel('Frequency')
plt.legend(['Diff in FEV Measurements','max diff between recorded fevpctECFSPR'],loc='best')
plt.title('FEVPCT')
#plt.show()
plt.savefig('FEV.jpg')

这可以通过手动设置Ytick的格式字符串来完成:

x = plt.linspace(0, 10, 100)
y = 1e6 + plt.sin(x)

ax = plt.subplot(111)
ax.plot(x, y)
ax.set_yticklabels(["{:.6e}".format(t) for t in ax.get_yticks()])
plt.subplots_adjust(left=0.2)
plt.show()

重要的部分是
{:6e}。格式(t)
这说明我们想要指数形式(标准形式)和6 S.F。还有一个调用子地块调整,以便显示数字的整个长度

编辑:看到您的评论后,我相信您可以通过设置默认参数来实现类似效果:

plt.rcParams['axes.formatter.limits'] = [-5,5]

默认值是
[-7,7]

不明白为什么没有一个选项可以使axis成为标准表单。如果我将ylim增加到3e7,它会自动将其更改为标准表单form@blablabla显然您可以这样做:
plt.gca().ticklabel_格式(style='sci',scilimits=(0,1),axis='y')
您编辑的答案非常完美,我想一定有办法更改其默认设置,谢谢