2012-04-02 11 views
5

Tôi có vales với sự khác biệt rất nhỏ như ... 0.000001. Tôi muốn hình dung chúng trên thang đo logarit. Tôi tự hỏi làm thế nào để làm điều đó trong matplotlib.cách trực quan hóa các giá trị trên thang đo logarit trên matplotalib?

Thanks a lot

+0

có thể trùng lặp của [ Vẽ các trục logarit với matplotlib trong python] (http://stackoverflow.com/questions/773814/plot-logarithmic-axes-with-matplotlib-in-python) – bluenote10

Trả lời

15

http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.axis

Chỉ cần thêm đối số từ khóa log=True

Hoặc, trong một ví dụ:

from matplotlib import pyplot 
import math 
pyplot.plot([x for x in range(100)],[math.exp(y) for y in range(100)]) 
pyplot.xlabel('arbitrary') 
pyplot.ylabel('arbitrary') 
pyplot.title('arbitrary') 

#pyplot.xscale('log') 
pyplot.yscale('log') 

pyplot.show() 

enter image description here

1

Bạn có thể sử dụng mảnh này mã:

import matplotlib.pyplot 
# to set x-axis to logscale 
matplotlib.pyplot.xscale('log') 
# to set y-axis to logscale 
matplotlib.pyplot.yscale('log') 
2

Thay vì plot, bạn có thể sử dụng semilogy:

import numpy as npy 
import matplotlib.pyplot as plt 
x=npy.array([i/100. for i in range(100)]) 
y=npy.exp(20*x) 
plt.semilogy(x, y) 
plt.show() 

Nhưng tôi không hoàn toàn chắc chắn những gì bạn mong muốn có được từ việc sử dụng thang logarit. Khi bạn nói "sự khác biệt nhỏ", bạn có nghĩa là các giá trị có thể là một cái gì đó như 193.000001 và 193.000002? Nếu vậy, nó có thể giúp trừ tắt 193.

3

Vì tất cả các câu trả lời khác chỉ đề cập đến cách tiếp cận pyplot.xscale("log") toàn cầu: Bạn cũng có thể thiết lập nó mỗi trục, nhưng sau đó cú pháp là:

ax.set_yscale("log")