2013-08-30 3 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 Также есть призыв к настройкам подзаголовков, чтобы показать всю длину номера.

EDIT: Просмотрев ваш комментарий Я считаю, что вы могли бы достичь подобного эффекта путем установки Params по умолчанию:

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

по умолчанию [-7, 7]!

+1

вы правильно отредактировали ответ, я думал, что должен быть способ изменить настройку по умолчанию, и это делает, спасибо – blablabla

Смежные вопросы