2012-08-07 26 views
22

Khi tôi cố gắng làm một âm mưu chống lại một dải có số lượng đủ lớn, tôi nhận được một trục với sự dịch chuyển tương đối cho tất cả các dấu tích. Ví dụ:Làm thế nào để loại bỏ sự dịch chuyển tương đối trong trục matplotlib

plot([1000, 1001, 1002], [1, 2, 3]) 

tôi nhận được những ve trên trục abscissas:

0.0  0.5  1.0  1.5  2.0 
           +1e3 

Câu hỏi đặt ra là làm thế nào để loại bỏ +1e3 và nhận chỉ:

1000.0 1000.5 1001.0 1001.5 1002.0 

Trả lời

25
plot([1000, 1001, 1002], [1, 2, 3]) 
gca().get_xaxis().get_major_formatter().set_useOffset(False) 
draw() 

này grabs hiện tại axes, nhận đối tượng axis trục x và sau đó là đối tượng định dạng chính d đặt useOffset thành false (doc).

Trong phiên bản mới hơn (1.4+) của matplotlib, hành vi mặc định có thể được thay đổi thông qua axes.formatter.useoffset rcparam.

+0

Cảm ơn, nó hoạt động. –

2

Để vô hiệu hóa sự thay đổi tương đối ở khắp mọi nơi, thiết lập các thông số rc:

import matplotlib 
matplotlib.rc('axes.formatter', useoffset=False) 
+1

Có lẽ bạn nên thêm một số giải thích cho câu trả lời của bạn để nó không chỉ là mã. – khelwood

+0

Mặc dù đoạn mã này có thể giải quyết được câu hỏi, [bao gồm cả giải thích] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) thực sự giúp cải thiện chất lượng bài đăng của bạn. Hãy nhớ rằng bạn đang trả lời câu hỏi cho người đọc trong tương lai và những người đó có thể không biết lý do cho đề xuất mã của bạn. – bahrep

+0

Đã cập nhật để thêm giải thích. – zbyszek

Các vấn đề liên quan