2 votes

Comment obtenir un axe de graphique sous forme standard

J'ai tracé un graphique dont l'échelle sur l'axe des y est grande (10^6), mais pour l'instant l'axe affiche le nombre entier. Comment puis-je faire en sorte que l'axe soit affiché sous forme standard ?

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

2voto

Greg Points 3333

Cela peut être fait en définissant manuellement les chaînes de format pour les 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

La partie importante est {:6e}".format(t) Ceci indique que nous voulons la forme exponentielle (forme standard) avec 6 S.F. Il y a aussi un appel à l'ajustement des sous-graphes pour que toute la longueur du nombre soit montrée.

EDIT : Après avoir lu votre commentaire, je pense que vous pourriez obtenir un effet similaire en définissant les paramètres par défaut :

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

La valeur par défaut est [-7, 7] !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X