J'utilise Matplotlib Python pour tracer des ensembles de données xy simples. Cela produit des graphiques de belle apparence, bien que, lorsque je "zoome" trop près de différentes sections du graphique tracé à l'aide de la vue (1) apparaissant lorsque vous exécutez plt.show()
), les valeurs de l’axe des abscisses passent de la forme numérique standard (1050, 1060, 1070, etc.) à la forme scientifique avec notation exponentielle (par exemple 1, 1.5, 2.0 avec le symbole x). étiquette d'axe donnée sous la forme +1.057e3
).
Je préférerais que mes figures conservent la numérotation simple de l'axe plutôt que d'utiliser une forme exponentielle. Existe-t-il un moyen de forcer Matplotlib à le faire?
Le formatage des étiquettes de ticks est contrôlé par un objet Formatter
qui, si vous n’avez rien fait d’impressionnant, sera un objet ScalerFormatter
par défaut . Ce formateur utilisera un décalage constant si le changement fractionnaire des valeurs visibles est très petit. Pour éviter cela, éteignez-le simplement:
plt.plot(arange(0,100,10) + 1000, arange(0,100,10))
ax = plt.gca()
ax.get_xaxis().get_major_formatter().set_useOffset(False)
plt.draw()
Si vous voulez éviter la notation scientifique en général,
ax.get_xaxis().get_major_formatter().set_scientific(False)
Peut contrôler cela globalement via le axes.formatter.useoffset
cparam.
Vous pouvez utiliser une commande plus simple pour le désactiver:
plt.ticklabel_format(useOffset=False)
Vous pouvez utiliser quelque chose comme:
from matplotlib.ticker import ScalarFormatter, FormatStrFormatter
ax.xaxis.set_major_formatter(FormatStrFormatter('%.0f'))