2012-02-16 16 views
23

Ben numpy veri (mikrosaniye zaman damgaları deltalar) aşağıdaki aralığı vardır:Matplotlib yaxis aralığı, ofset değerleri yerine mutlak değerler kullanarak görüntüleniyor mu?

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

zaman matplotlib.pyplot ile çizmek:

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

aşağıdaki arsa olsun. Y ekseni neden bu şekilde ölçeklendiriliyor? Verilerin ofseti değil, veri olarak etiketlenecek Y eksenini nasıl alabilirim? Bazen arsa bazen "+ 4.nnn" dir (bazen veri aralığına göre değişir).

Parselli "garip":
Plotted Badly

"doğru" Çizilen:
Plotted Correctly

cevap

38

seti useOffset False:

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

Güzel! Teşekkür ederim! –

+6

Bu artık benim için MPL 1.3.0'da çalışmıyor. Şimdi bunun sadece bir ScalarFormatter ile çalıştığını söylüyor. Yani buradaki kısa cevap benim için çözdü: http://stackoverflow.com/questions/3677368/matplotlib-format-axis-offset-values-to-whole-numbers-or-specific-number –

9

da kullanabilirsiniz

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

Yine de HYRY'nin cevabını daha çok seviyorum.

+0

bu tek şey Bu benim için çalıştı! Teşekkürler – grasshopper

3

This answer devre dışı bırakarak önerdi benim için çalışan küresel bir ayar olarak offset:

matplotlib.rcParams['axes.formatter.useoffset'] = False 
İlgili konular