2012-02-16 9 views
23

Ho la seguente gamma di dati NumPy (delta dei timestamp usec):L'intervallo yax della matrice Matstotib è visualizzato utilizzando i valori assoluti anziché i valori di offset?

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]) 

Quando ho trama con matplotlib.pyplot:

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

ottengo il seguente grafico. Perché l'asse Y viene ridimensionato in questo modo? Come posso ottenere che l'asse Y sia etichettato come i dati, non un offset dei dati? A volte la trama è "+ 4.nnn" a volte non lo è (a seconda dell'intervallo di dati?).

tracciata "strano":
Plotted Badly

tracciata "correttamente":
Plotted Correctly

risposta

38

set useOffset False:

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

Bella! Grazie! –

+6

Questo non funziona più con me in MPL 1.3.0. Dice che ora funziona solo con uno ScalarFormatter. Quindi la risposta breve qui ha risolto per me: http://stackoverflow.com/questions/3677368/matplotlib-format-axis-offset-values-to-whole-numbers-or-specific-number –

9

È inoltre possibile utilizzare

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

Anche se mi piace la risposta di HYRY's meglio.

+0

questa è l'unica cosa quello ha funzionato per me! Grazie – grasshopper

3

This answer suggerito disabilitando l'offset come impostazione globale, che ha lavorato per me:

matplotlib.rcParams['axes.formatter.useoffset'] = False 
Problemi correlati