我绘制了一个图表,其中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')
答案 0 :(得分: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 S.F.还调用了子图调整,以便显示数字的整个长度。
编辑:看过你的评论我相信你可以通过设置默认参数来实现类似的效果:
plt.rcParams['axes.formatter.limits'] = [-5,5]
默认为[-7, 7]
!