2012-11-21 29 views
7

Các ô R sẽ tự động đặt giới hạn x và y để đặt một khoảng trắng giữa dữ liệu và các trục. Tôi đã tự hỏi nếu có một cách cho matplotlib để làm tương tự tự động. Nếu không, có một công thức hay 'quy tắc ngón tay cái' tốt cho cách R đặt giới hạn trục của nó không?Bộ đệm trục dữ liệu kiểu R trong matplotlib

Trả lời

6

Nhìn vào ?par cho tham số xaxs:

Phong cách của trục tính toán khoảng thời gian được sử dụng cho trục x. Các giá trị có thể là "r", "i", "e", "s", "d". Các kiểu thường được kiểm soát bởi phạm vi dữ liệu hoặc xlim, nếu được.
Kiểu "r" (thông thường) đầu tiên mở rộng phạm vi dữ liệu thêm 4 phần trăm ở mỗi đầu và sau đó tìm một trục có nhãn đẹp phù hợp trong phạm vi mở rộng.

Vì vậy, nếu chúng ta cố gắng này ra:

par(xaxs="r")  #The default 
plot(1:10, 1:10) 

enter image description here

Chúng tôi thực sự có thể chứng minh rằng nó là +/- 4% của dãy trên mỗi bên:

abline(v=1-(diff(range(1:10)))*0.04, col="red") 
abline(v=10+(diff(range(1:10)))*0.04, col="red") 

enter image description here

7

Trong matplotlib bạn có thể đạt được điều này bằng cách thiết lập margins

import matplotlib.pyplot as plt 

fig, ax = plt.subplots() 
ax.margins(0.04) 
data = range(1, 11) 
ax.plot(data, 'wo') 
plt.savefig('margins.png') 

margins

Tuy nhiên, nó không có vẻ, rằng có một tham số rc để có được điều này tự động.

Cập nhật 4/2013

Khả năng để thêm một param rc cho lợi nhuận hiện đang ở matplotlib master (Cảm ơn @tcaswell). Vì vậy, nó sẽ làm việc với bản phát hành matplotlib tiếp theo (bản phát hành hiện tại là 1.2.1).

+0

Đây là câu trả lời đúng. Bạn không chắc chắn tại sao câu trả lời khác được chọn vì câu hỏi đã được hỏi về matplotlib của Python và không phải là cốt truyện của R() (R đã được sử dụng như một so sánh). –

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