2012-07-22 34 views
7

Tôi muốn vẽ 2 ô con bằng cách sử dụng các trục matlibplot. Kể từ khi hai subplots có cùng một ylabel và ticks, tôi muốn tắt cả hai ticks và nhãn hiệu của subplot thứ hai. Sau đây là tập lệnh ngắn của tôi:Làm thế nào để tắt các dấu tích và nhãn hiệu của một trục matlibplot?

import matplotlib.pyplot as plt 
ax1=plt.axes([0.1,0.1,0.4,0.8]) 
ax1.plot(X1,Y1) 
ax2=plt.axes([0.5,0.1,0.4,0.8]) 
ax2.plot(X2,Y2) 

BTW, trục X đánh dấu chồng lên nhau và không chắc chắn có giải pháp gọn gàng hay không. (Một giải pháp có thể được làm cho dấu cuối cùng vô hình cho mỗi subplot ngoại trừ một trong những cuối cùng, nhưng không chắc chắn như thế nào). Cảm ơn!

Trả lời

8

Một google nhanh chóng và tôi thấy câu trả lời:

plt.setp(ax2.get_yticklabels(), visible=False) 
ax2.yaxis.set_tick_params(size=0) 
ax1.yaxis.tick_left() 
4

Một giải pháp hơi khác nhau có thể là để thực sự thiết lập các ticklabels để ''. Sau đây sẽ thoát khỏi tất cả các y-ticklabels và đánh dấu dấu:

# This is from @pelson's answer 
plt.setp(ax2.get_yticklabels(), visible=False) 

# This actually hides the ticklines instead of setting their size to 0 
# I can never get the size=0 setting to work, unsure why 
plt.setp(ax2.get_yticklines(),visible=False) 

# This hides the right side y-ticks on ax1, because I can never get tick_left() to work 
# yticklines alternate sides, starting on the left and going from bottom to top 
# thus, we must start with "1" for the index and select every other tickline 
plt.setp(ax1.get_yticklines()[1::2],visible=False) 

Và bây giờ để thoát khỏi các tickmark ngoái và nhãn cho trục x

# I used a for loop only because it's shorter 
for ax in [ax1, ax2]: 
    plt.setp(ax.get_xticklabels()[-1], visible=False) 
    plt.setp(ax.get_xticklines()[-2:], visible=False) 
Các vấn đề liên quan