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
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
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()
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')
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.
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")
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