2010-06-03 37 views

Trả lời

28

Dường như matplotlib tôn trọng những cài đặt như rcParams:

pylab.rcParams['xtick.major.pad']='8' 
pylab.rcParams['ytick.major.pad']='8' 

Đặt ra các trước bạn tạo ra bất kỳ con số và bạn sẽ ổn thôi.

Tôi đã xem mã nguồn và dường như không có cách nào khác để đặt chúng theo lập trình. (tick.set_pad() trông giống như nó cố gắng làm điều đúng, nhưng padding dường như được thiết lập khi các Ticks được xây dựng và không thể thay đổi sau đó.)

13

Điều này có thể được thực hiện bằng cách sử dụng set_pad nhưng bạn sau đó phải thiết lập lại các nhãn ...

for tick in ax.get_xaxis().get_major_ticks(): 
    tick.set_pad(8.) 
    tick.label1 = tick._get_text1() 
+4

Tôi cho rằng điều xấu xí ở đây có phần không liên quan và đây vẫn là giải pháp tốt. Có nhiều lần khi bạn không chỉ làm một cốt truyện trên cùng một hình. Điều này có nghĩa rcParams không phải là một giải pháp vì bạn muốn tránh cài đặt chung. – MikeGM

+0

@MikeGM: Nhìn lại, tôi đồng ý với bạn vì những lý do bạn đề cập đến. Tôi sẽ đưa ra mô tả của tôi về điều này là xấu xí, mặc dù việc đặt lại nhãn không chính xác thanh lịch. Cảm ơn bạn đã bình luận. – tom10

42

Nếu bạn không muốn thay đổi khoảng cách toàn cầu (bằng cách chỉnh sửa rcParams của bạn), và muốn có một cách tiếp cận sạch hơn, hãy thử này:

ax.tick_params(axis='both', which='major', pad=15)

hoặc chỉ với trục x

ax.tick_params(axis='x', which='major', pad=15)

+3

Điều này dễ dàng hơn nhiều so với việc lặp qua các dấu tích cho một ô duy nhất. Cảm ơn! Đối với một trục đơn, bạn cũng có thể sử dụng: 'ax.xaxis.set_tick_params (pad = n)' – jonchar

+0

Khá khó đối với người đọc không có kinh nghiệm để hiểu rìu là gì. Nếu tôi nhận được nó với ax = plt.gca(), thì lệnh chỉ di chuyển các nhãn. –

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