Cómo evitar que los números se cambien a forma exponencial en Python matplotlib figura
Estoy usando Matplotlib en Python para trazar conjuntos de datos x-y simples. Esto produce gráficos de aspecto agradable, aunque cuando "acerco" demasiado en varias secciones del gráfico trazado usando la Vista de figura (que aparece cuando ejecuta plt.show()
), los valores del eje x cambian de la forma numérica estándar (1050, 1060, 1070, etc.) a la 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 conservaran la numeración simple del eje, en lugar de usar la forma exponencial. ¿Hay alguna manera de forzar a Matplotlib a hacer esto?
3 answers
El formato de las etiquetas tick está controlado por un objeto Formatter
, que suponiendo que no haya hecho nada sofisticado será un ScalerFormatter
por defecto . Este formateador utilizará un cambio constante si el cambio fraccionario 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 desea evitar la notación científica en general,
ax.get_xaxis().get_major_formatter().set_scientific(False)
Puede controlar esto globalmente a través del axes.formatter.useoffset
rcparam.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-15 16:18:41
Puede usar un comando más simple para desactivarlo:
plt.ticklabel_format(useOffset=False)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-05 12:15:07
Puedes usar algo como:
from matplotlib.ticker import ScalarFormatter, FormatStrFormatter
ax.xaxis.set_major_formatter(FormatStrFormatter('%.0f'))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-23 14:54:00