2012-02-16 34 views
23

Tôi có phạm vi dữ liệu sau đây NumPy (đồng bằng châu thổ của timestamps USEC):Hiển thị phạm vi Matplotlib yaxis sử dụng giá trị tuyệt đối thay vì giá trị 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]) 

Khi tôi vẽ với matplotlib.pyplot:

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

tôi nhận được cốt truyện sau đây. Tại sao trục Y được thu nhỏ theo cách đó? Làm cách nào để trục Y được gắn nhãn là dữ liệu chứ không phải là dữ liệu bù trừ? Đôi khi cốt truyện là "+ 4.nnn" đôi khi nó không phải là (tùy thuộc vào phạm vi dữ liệu?).

âm mưu "lạ":
Plotted Badly

âm mưu "một cách chính xác":
Plotted Correctly

Trả lời

38

bộ useOffset False:

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

đẹp! Cảm ơn bạn! –

+6

Tính năng này không hoạt động đối với tôi nữa trong MPL 1.3.0. Nó nói rằng điều này bây giờ chỉ hoạt động với ScalarFormatter. Vì vậy, câu trả lời ngắn ở đây giải quyết nó cho tôi: http://stackoverflow.com/questions/3677368/matplotlib-format-axis-offset-values-to-whole-numbers-or-specific-number –

9

Bạn cũng có thể sử dụng

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

Mặc dù tôi thích câu trả lời của @ HYRY tốt hơn.

+0

đây là điều duy nhất đã làm việc cho tôi! cảm ơn – grasshopper

3

This answer gợi ý vô hiệu hóa bù đắp như một môi trường toàn cầu, mà làm việc cho tôi:

matplotlib.rcParams['axes.formatter.useoffset'] = False 
Các vấn đề liên quan