Xóa xticks trong một âm mưu matplotlib?


290

Tôi có một cốt truyện semilogx và tôi muốn xóa xticks. Tôi đã thử:

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

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


Một số giải pháp không hiệu quả với tôi. Nhưng chỉ cần thay đổi một chút các ví dụ ở đây: ax.set_xticks([], [])và nó đã được giải quyết ...
TravelTrader

Câu trả lời:


464

Các tick_paramsphương pháp rất hữu ích cho các công cụ như thế này. Mã này tắt các dấu tick chính và phụ và loại bỏ các nhãn khỏi 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=False,      # ticks along the bottom edge are off
    top=False,         # ticks along the top edge are off
    labelbottom=False) # labels along the bottom edge are off
plt.show()
plt.savefig('plot')
plt.clf()

nhập mô tả hình ảnh ở đây


86
Tôi đánh giá cao làm thế nào điều này không chỉ trả lời câu hỏi mà còn cung cấp một khuôn mẫu để tắt / bật một số thứ. Đ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')
Steven C. Howell

2
Điều gì nếu nó là một cốt truyện 3D?
tommy.carstensen

38
Đâ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, axescó cùng một tick_paramsphương pháp.
Nhà vật lý điên

22
Trong các phiên bản mới hơn matplotlib, bạn nên thay thế 'on'bằng True'off'bằng False.
BallpointBen

1
Trả lời nên được cập nhật cho giao diện OOP và cú pháp phiên bản mới hơn.
ifly6

141

Không chính xác những gì OP 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, đánh dấu và nhãn là chỉ cần gọi:

plt.axis('off')

25
Những gì tôi cần cảm ơn. Phiên bản hướng đối tượng sẽ là ax.axis('off')một phiên bản trục hiện có.
PlasmaBinturong

5
Làm thế nào cho chỉ xaxis?
qrtLs

82

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

# for matplotlib.pyplot
# ---------------------
plt.xticks([], [])
# for axis object
# ---------------
# from Anakhand May 5 at 13:08
# for major ticks
ax.set_xticks([])
# for minor ticks
ax.set_xticks([], minor=True)

8
Nếu bạn có một trường hợp trục hiện có, giả sử ax, thì bạn có thể sử dụng:ax.set_xticks([], [])
Guilherme Salomé

@ GuilhermeSalomé điều này hiện đưa ra cảnh báo, "Truyền tham số nhỏ của set_xticks () không được chấp nhận kể từ Matplotlib 3.2; tham số sẽ trở thành từ khóa - chỉ hai bản phát hành nhỏ sau." Giải pháp nào là đúng?
Rylan Schaeffer

2
@RylanSchaeffer ax.set_xticks([])cho bọ ve lớn, ax.set_xticks([], minor=True)cho ve nhỏ. Tương đương với pyplotplt.xticks([])plt.xticks([], minor=True).
Anakhand


42

Có một giải pháp tốt hơn và đơn giản hơn so với giải pháp được đưa ra bởi 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')

Mong rằng sẽ giúp.


22
"Tốt hơn" là tranh cãi, nhưng +1 cho thay thế.
mechanical_meat

Một biến thể của giải pháp này cũng có hiệu quả với tôi khi mục tiêu là chỉ loại bỏ xticks khỏi phần phụ "phóng to", trong khi giữ chúng trong cốt truyện chính. Sử dụng axins.xaxis.set_major_locator(plt.NullLocator()), axinsđối tượng được trả về bởi axins = zoomed_inset_axes()(hàm được nhập từ đâu mpl_toolkits.axes_grid1.inset_locator).
Dennis Soemers

28

Hãy thử cách này để xóa nhãn (nhưng không phải là dấu tick):

import matplotlib.pyplot as plt

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

thí dụ


3
setpở chế độ pylab, không thể được sử dụng để chống lại các trục riêng lẻ
bảnh bao

1
Làm thế nào về giao diện hướng đối tượng?
ifly6

Đây là câu trả lời duy nhất cũng hoạt động cho các lô 3D cho tôi. Cảm ơn vì điều đó!
Brent

13

Đoạn mã này có thể giúp loại bỏ xticks chỉ.

from matplotlib import pyplot as plt    
plt.xticks([])

Đoạn mã này có thể giúp loại bỏ cả xticks và yticks.

from matplotlib import pyplot as plt    
plt.xticks([]),plt.yticks([])

3
# remove all the ticks (both axes), and tick labels on the Y axis
plt.tick_params(top='off', bottom='off', left='off', right='off', labelleft='off', labelbottom='on')

2
Phiên bản hướng đối tượng của điều này làax.tick_params()
Marcelo Villa-Piñeros

1
Ngoài ra, sử dụng offonkhông được dùng nữa. MatplotlibDeprecationWarning: Passing one of 'on', 'true', 'off', 'false' as a boolean is deprecated; use an actual boolean (True/False) instead.
Marcelo Villa-Piñeros

0

Những người bạn đang tìm kiếm một lệnh ngắn để tắt tất cả các dấu tick và nhãn sẽ ổn với

plt.tick_params(top=False, bottom=False, left=False, right=False, labelleft=False, labelbottom=False)

cho phép loại bool các tham số tương ứng kể từ phiên bản matplotlib> = 2.1.1

Đối với cài đặt đánh dấu tùy chỉnh, các tài liệu rất hữu ích:

https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.tick_params.html

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.