2012-02-16 13 views
23

Tengo el siguiente rango de datos numpy (deltas de marcas de tiempo SU):Matplotlib yaxis range display utilizando valores absolutos en lugar de valores de compensación?

array([ 4.312, 4.317, 4.316, 4.32 , 4.316, 4.316, 4.319, 4.317, 
    4.317, 4.316, 4.318, 4.316, 4.318, 4.316, 4.318, 4.317, 
    4.317, 4.317, 4.316, 4.317, 4.318, 4.316, 4.318, 4.316, 
    4.318, 4.316, 4.317, 4.317, 4.318, 4.316, 4.317, 4.317, 
    4.317, 4.317, 4.317, 4.316, 4.319, 4.315, 4.319, 4.315, 
    4.319, 4.315, 4.316, 4.319, 4.317, 4.317, 4.317, 4.318, 
    4.315, 4.317, 4.317, 4.317, 4.319, 4.314, 4.32 , 4.315, 
    4.317, 4.318, 4.315, 4.318, 4.317, 4.317, 4.317, 4.316, 
    4.317, 4.318, 4.317, 4.317, 4.317, 4.315, 4.319, 4.317, 
    4.315, 4.319, 4.316, 4.318, 4.318, 4.315, 4.318, 4.317, 
    4.317, 4.321]) 

Cuando parcela con matplotlib.pyplot:

import matplotlib.pyplot as plt 
plt.plot(deltas) 
plt.show() 

me sale el siguiente diagrama. ¿Por qué el eje Y se escala de esa manera? ¿Cómo puedo hacer que el eje Y sea etiquetado como los datos, no un desplazamiento de los datos? A veces la trama es "+ 4.nnn", a veces no lo es (¿depende del rango de datos?).

trazan "extraña":
Plotted Badly

trazan "correcta":
Plotted Correctly

Respuesta

38

conjunto useOffset en Falso:

ax = plt.gca() 
ax.ticklabel_format(useOffset=False) 
+0

hermoso! ¡Gracias! –

+6

Esto ya no funciona para mí en MPL 1.3.0. Dice que esto ahora solo funciona con ScalarFormatter. Así que la breve respuesta aquí me la resolvió: http://stackoverflow.com/questions/3677368/matplotlib-format-axis-offset-values-to-whole-numbers-or-specific-number –

9

También puede utilizar

ax = plt.gca() 
ax.set_yticklabels(ax.get_yticks()) 

Aunque me gusta más la respuesta de @ HYRY.

+0

esto es lo único eso funcionó para mí! Gracias – grasshopper

3

This answer sugirió deshabilitar el desplazamiento como una configuración global, que trabajó para mí:

matplotlib.rcParams['axes.formatter.useoffset'] = False 
Cuestiones relacionadas