2012-02-16 18 views
23

Mam następujący zakres danych NumPy (delty usec znaczników czasu):Wyświetlanie zakresu wartości Yaxis w Matplotlib przy użyciu wartości bezwzględnych zamiast wartości przesunięcia?

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

Kiedy wykreślić z matplotlib.pyplot:

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

otrzymuję następujący wykres. Dlaczego oś Y jest skalowana w ten sposób? W jaki sposób mogę oznaczyć oś Y jako dane, a nie przesunięcie danych? Czasami działka to "+ 4.nnn", czasami nie jest (w zależności od zakresu danych?).

wykreślono "dziwnie":
Plotted Badly

wykreślono "prawidłowo":
Plotted Correctly

Odpowiedz

38

zestaw useOffset False:

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

Beautiful! Dziękuję Ci! –

+6

To nie działa już dla mnie w MPL 1.3.0. Mówi, że teraz działa tylko z ScalarFormatter. Tak więc krótka odpowiedź tutaj rozwiązała to dla mnie: http://stackoverflow.com/questions/3677368/matplotlib-format-axis-offset-values-to-whole-numbers-lub-specific-number –

9

Można również użyć

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

Chociaż bardziej podoba mi się odpowiedź @ HYRY.

+0

to jedyna rzecz to dla mnie zadziałało! dzięki – grasshopper

3

This answer zaproponował wyłączenie offsetu jako ustawienie globalne, który pracował dla mnie:

matplotlib.rcParams['axes.formatter.useoffset'] = False 
Powiązane problemy