2013-06-03 34 views
7

Tôi hiện đang sử dụng nhật ký để có nhiều khả năng vẽ sơ đồ dữ liệu của mình hơn. Tuy nhiên, dữ liệu của tôi cũng bao gồm các giá trị bằng không. Tôi biết rằng các giá trị bằng không sẽ không hoạt động trên logscale như log (0) không được xác định.Lô thông tin có giá trị bằng không trong matplotlib

Vì vậy, ví dụ,

fig = plt.figure() 
ax = fig.add_subplot(111) 
ax.plot([0,1,2],[10,10,100],marker='o',linestyle='-') 
ax.set_yscale('log') 
ax.set_xscale('log') 

hoàn toàn bỏ qua các giá trị zero. Hành vi này có được chấp nhận không? Ít nhất cũng có một số cảnh báo. Tôi chỉ nhận ra nó một cách tình cờ. Có lẽ cũng có một cách để vẽ dữ liệu giá trị bằng không trong logscale?

Cảm ơn!

P.S .: Tôi hy vọng điều này phù hợp với lưu lượng truy cập stackoverflow. Tôi không tìm thấy danh sách gửi thư của matplotlib.

+1

mpl -> http://sourceforge.net/mail/?group_id=80706 – tacaswell

+2

thể trùng lặp của [thang logarit Matplotlib với giá trị zero] (http://stackoverflow.com/questions/16382917/matplotlib-logarithmic-scale-with-zero-value) –

+0

Câu hỏi trên có hai giải pháp khả thi cho việc này. –

Trả lời

17

Cách dễ nhất là sử dụng ô "giao diện" cho mục đích này. Khoảng thời gian gần 0 sẽ có thang đo tuyến tính, vì vậy 0 có thể được hiển thị.

import matplotlib.pyplot as plt 
fig, ax = plt.subplots() 
ax.plot([0,1,2],[10,10,100],marker='o',linestyle='-') 
ax.set_yscale('symlog') 
ax.set_xscale('symlog') 
plt.show() 

enter image description here

Symlog thiết lập một khoảng thời gian nhỏ gần bằng không (cả trên và dưới) để sử dụng một quy mô tuyến tính. Điều này cho phép mọi thứ vượt qua 0 mà không gây ra log(x) để phát nổ (hoặc chuyển sang -inf, thay vào đó).

Có một so sánh hình ảnh đẹp như một câu trả lời SO đây: mailing list https://stackoverflow.com/a/3513150/325565

+0

Câu trả lời hay. Cảm ơn vì điều đó. Bạn có thể xây dựng những gì symlog chính xác đang làm không? – fsociety

+1

Chắc chắn! Xem các bản cập nhật. Ngoài ra còn có một vài ví dụ trong thư viện matplotlib (ví dụ: http://matplotlib.org/examples/pylab_examples/symlog_demo.html), nhưng chúng không rõ ràng như câu trả lời SO mà tôi đã liên kết đến. –

+0

Siêu hữu ích. Cảm ơn. – Newb

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