2017-10-17 31 views

Répondre

0

Habituellement, vous devez simplement mettre à l'échelle les données avant le tracé. Donc, au lieu de plt.plot(x,y), vous utiliseriez plt.plot(x,y/1e6).

Pour formater les valeurs avec 3 décimales, utilisez un matplotlib.ticker.StrMethodFormatter et fournissez un format avec 3 décimales, dans ce cas "{x:.3f}".

import matplotlib.pyplot as plt 
import matplotlib.ticker 
import numpy as np; np.random.seed(42) 

x = np.arange(5) 
y = np.array([5e5,2e5,0,3e5,4e5]) 

plt.plot(x,y/1e6) 

plt.gca().yaxis.set_major_formatter(matplotlib.ticker.StrMethodFormatter("{x:.3f}")) 

plt.show() 
+0

Merci, j'ai fait avec: def numfmt (x, pos): # votre fonction de formatage personnalisée: diviser par 100.0 s = '{}'. Format (x/1000000.0) return s; et xfmt = tkr.FuncFormatter (numfmt) plt.gca(). xaxis.set_major_formatter (xfmt) –

+0

Quel est le problème avec cette réponse? – ImportanceOfBeingErnest