2012-05-22 33 views
8

Ví dụ x = [1 ~ 180.000] Khi tôi vẽ nó, trong trục x, nó cho thấy: 1, 20.000, 40.000, ... 180.000 những 0s là thực sự gây phiền nhiễuLàm thế nào để thiết lập chiều dài đơn vị của trục trong matplotlib?

Làm thế nào tôi có thể thay đổi đơn vị chiều dài của trục x đến 1000, sao cho nó hiển thị: 1, 20, 40, ... 180 và cũng chỉ ra rằng một nơi nào đó đơn vị của nó ở 1000.

Tôi biết mình có thể tự mình biến đổi tuyến tính. Nhưng không phải là có một chức năng làm điều đó trong matplotlib?

Trả lời

6

Nếu bạn đang hướng đến việc tạo số liệu chất lượng xuất bản, bạn sẽ muốn kiểm soát tốt các nhãn trên trục. Một cách để làm điều này là để trích xuất các văn bản nhãn và áp dụng định dạng tùy chỉnh của riêng bạn:

import pylab as plt 
import numpy as np 

# Create some random data over a large interval 
N = 200 
X = np.random.random(N) * 10 ** 6 
Y = np.sqrt(X) 

# Draw the figure to get the current axes text 
fig, ax = plt.subplots() 
plt.scatter(X,Y) 
ax.axis('tight') 
plt.draw() 

# Edit the text to your liking 
label_text = [r"$%i \cdot 10^4$" % int(loc/10**4) for loc in plt.xticks()[0]] 
ax.set_xticklabels(label_text) 

# Show the figure 
plt.show() 

enter image description here

3

Bạn có thể sử dụng pyplot.ticklabel_format để thiết lập kiểu nhãn để ký hiệu khoa học.

import pylab as plt 
import numpy as np 

# Create some random data over a large interval 
N = 200 
X = np.random.random(N) * 10 ** 6 
Y = np.sqrt(X) 

# Draw the figure to get the current axes text 
fig, ax = plt.subplots() 
plt.scatter(X,Y) 
ax.axis('tight') 
plt.draw() 

plt.ticklabel_format(style='sci',axis='x',scilimits=(0,0)) 

# Edit the text to your liking 
#label_text = [r"$%i \cdot 10^4$" % int(loc/10**4) for loc in plt.xticks()[0]] 
#ax.set_xticklabels(label_text) 

# Show the figure 
plt.show() 

Output

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