2013-08-30 43 views
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') 
+0

不明白爲什麼不只是一個選項,使軸標準形式。如果我將ylim增加到3e7,它會自動將它更改爲標準形式 – blablabla

+0

@blablabla顯然你可以這樣做:'plt.gca()。ticklabel_format(style ='sci',scilimits =(0,1),axis ='y ')' –

回答

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() 

enter image description here

的重要組成部分,是{:6e}".format(t),各國有我們想要的指數形式(標準型)與6 SF還有一個調用subplots調整,以便顯示整個長度的數字。

編輯:在看到你的評論,我相信你可以通過設置默認PARAMS達到類似的效果:

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

默認爲[-7, 7]

+1

你編輯答案是完美的,我認爲必須有一種方法來改變它的默認設置,這樣做,謝謝 – blablabla