2012-10-21 40 views
145

Tôi có một âm mưu semilogx và tôi muốn loại bỏ các xticks. Tôi đã thử:Xóa xticks trong âm mưu matplotlib?

plt.gca().set_xticks([]) 
plt.xticks([]) 
ax.set_xticks([]) 

Lưới biến mất (ok), nhưng ve nhỏ (ở vị trí của bọ chính) vẫn còn. Làm thế nào để loại bỏ chúng?

Trả lời

249

Phương pháp tick_params rất hữu ích cho những thứ như thế này. Mã này tắt các ve lớn và nhỏ và loại bỏ các nhãn từ trục x.

from matplotlib import pyplot as plt 
plt.plot(range(10)) 
plt.tick_params(
    axis='x',   # changes apply to the x-axis 
    which='both',  # both major and minor ticks are affected 
    bottom='off',  # ticks along the bottom edge are off 
    top='off',   # ticks along the top edge are off 
    labelbottom='off') # labels along the bottom edge are off 
plt.show() 
plt.savefig('plot') 
plt.clf() 

enter image description here

+34

Tôi đánh giá cao cách này không chỉ trả lời câu hỏi nhưng cung cấp một khuôn mẫu để quay một vài điều off/on. Điều này áp dụng kết quả cho cả hai trục x và y: 'plt.tick_params (axis = 'both', which = 'both', bottom = 'off', top = 'off', labelbottom = 'off', right = 'off ', left =' off ', labelleft =' off ') ' –

+1

Điều gì xảy ra nếu nó là đồ thị 3D? –

+11

Đây là một câu trả lời tuyệt vời. Đối với những người tìm kiếm phiên bản oo, 'trục' có cùng phương thức [' tick_params'] (http://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes.tick_params). –

34

Có một tốt hơn, và đơn giản hơn, giải pháp so với cái do John Vinyard. Sử dụng NullLocator:

import matplotlib.pyplot as plt 

plt.plot(range(10)) 
plt.gca().xaxis.set_major_locator(plt.NullLocator()) 
plt.show() 
plt.savefig('plot') 

Hy vọng điều đó sẽ hữu ích.

+15

"Tốt hơn" là gây tranh cãi, nhưng +1 cho giải pháp thay thế. – bernie

20

Hãy thử điều này để loại bỏ các nhãn (nhưng không phải là ve):

import matplotlib.pyplot as plt 

plt.setp(ax.get_xticklabels(), visible=False) 

example

+1

'setp' đang ở chế độ pylab, không thể sử dụng với các trục riêng lẻ – dashesy

54

Không chính xác những gì OP được yêu cầu, nhưng một cách đơn giản để vô hiệu hóa tất cả các dòng trục, bọ ve và nhãn là chỉ cần gọi:

plt.axis('off') 
+6

Điều tôi cần cảm ơn. Phiên bản hướng đối tượng sẽ là 'ax.axis ('off')' trên một cá thể trục hiện có. – PlasmaBinturong

41

Dưới đây là một giải pháp thay thế mà tôi tìm thấy trên matplotlib mailing list:

import matplotlib.pylab as plt 

x = range(1000) 
ax = plt.axes() 
ax.semilogx(x, x) 
ax.xaxis.set_ticks_position('none') 

graph

37

Ngoài ra, bạn có thể vượt qua một vị trí đánh dấu trống và nhãn như

plt.xticks([], []) 
Các vấn đề liên quan