Cómo evitar que los números se cambien de forma exponencial en Python matplotlib figure

Estoy usando Matplotlib en Python para trazar conjuntos de datos xy simples. Esto produce gráficos atractivos, aunque cuando “acerco” demasiado las distintas secciones del gráfico con la Vista de figura (que aparece al ejecutar plt.show() ), los valores del eje x cambian de la forma de número estándar (1050, 1060, 1070, etc.) a forma científica con notación exponencial (por ejemplo, 1, 1.5, 2.0 con la etiqueta del eje x dada como +1.057e3 ).

Preferiría que mis figuras conserven la numeración simple del eje, en lugar de utilizar la forma exponencial. ¿Hay alguna manera de forzar a Matplotlib a hacer esto?

El formato de las tags de tick está controlado por un objeto Formatter , que asumiendo que usted no ha hecho nada sofisticado será un ScalerFormatter de forma predeterminada . Este formateador usará un cambio constante si el cambio fraccional de los valores visibles es muy pequeño. Para evitar esto, simplemente apágalo:

 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 quieres evitar la notación científica en general,

 ax.get_xaxis().get_major_formatter().set_scientific(False) 

Puede controlar esto de forma global a través de axes.formatter.useoffset rcparam.

Puedes usar un comando más simple para apagarlo:

 plt.ticklabel_format(useOffset=False) 

Puedes usar algo como:

 from matplotlib.ticker import ScalarFormatter, FormatStrFormatter ax.xaxis.set_major_formatter(FormatStrFormatter('%.0f'))