2

我绘制了一个图表,其中 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')
4

1 回答 1

2

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

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}".format(t)我们想要 6 SF 的指数形式(标准形式)的状态还有一个对子图调整的调用,以便显示数字的整个长度。

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

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

默认是[-7, 7]

于 2013-08-30T10:21:24.090 回答