Usunąć xticks z wykresu Matplotlib?


290

Mam działkę semilogx i chciałbym usunąć xticks. Próbowałem:

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

Siatka znika (ok), ale pozostają małe tiki (w miejscu głównych tików). Jak je usunąć?


Niektóre rozwiązania nie działały dla mnie. Ale tylko mała zmiana przykładów tutaj: ax.set_xticks([], [])i zostało rozwiązane ...
TravelTrader

Odpowiedzi:


464

Ta tick_paramsmetoda jest bardzo przydatna w przypadku takich rzeczy. Ten kod wyłącza znaczniki główne i drobne i usuwa etykiety z osi 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()

wprowadź opis zdjęcia tutaj


87
Rozumiem, jak to nie tylko odpowiada na pytanie, ale zapewnia szablon do włączania / wyłączania kilku rzeczy. Odnosi się to do obu osi xi y:plt.tick_params(axis='both', which='both', bottom='off', top='off', labelbottom='off', right='off', left='off', labelleft='off')
Steven C. Howell,

2
Co jeśli jest to fabuła 3D?
tommy.carstensen

38
To świetna odpowiedź. Dla tych, którzy szukają wersji oo, axesma tę samą tick_paramsmetodę.
Mad Physicist,

22
W nowszych wersjach matplotlib, należy wymienić 'on'z Truei 'off'z False.
BallpointBen

1
Odpowiedź powinna zostać zaktualizowana dla interfejsu OOP i składni nowszej wersji.
ifly6

142

Nie do końca to, o co prosił PO, ale prostym sposobem na wyłączenie wszystkich linii osi, znaczników i etykiet jest po prostu wywołanie:

plt.axis('off')

26
Czego potrzebowałem dzięki. Wersja zorientowana obiektowo byłaby ax.axis('off')na istniejącej instancji osi.
PlasmaBinturong

5
jak tylko xaxis?
qrtLs

82

Alternatywnie możesz podać pustą pozycję zaznaczenia i oznaczyć jako

# 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
Jeśli masz istniejącą instancję osi, powiedzmy ax, możesz użyć:ax.set_xticks([], [])
Guilherme Salomé

@ GuilhermeSalomé powoduje to wyświetlenie ostrzeżenia: „Przekazywanie drugorzędnego parametru set_xticks () pozycjonowane jest przestarzałe od Matplotlib 3.2; parametr stanie się tylko dwoma słowami kluczowymi później”. Jakie jest teraz właściwe rozwiązanie?
Rylan Schaeffer

2
@ RylanSchaeffer ax.set_xticks([])dla dużych kleszczy, ax.set_xticks([], minor=True)dla małych kleszczy. Odpowiednikami z pyplotplt.xticks([])i plt.xticks([], minor=True).
Anakhand


42

Jest lepsze i prostsze rozwiązanie niż to podane przez Johna Vinyarda. Użyj NullLocator:

import matplotlib.pyplot as plt

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

Mam nadzieję, że to pomaga.


22
„Lepsze” jest dyskusyjne, ale +1 za alternatywę.
Mechanical_meat

Odmiana tego rozwiązania działała również dla mnie, gdy celem było usunięcie xticków z „powiększonego” wstawki, przy jednoczesnym zachowaniu ich na głównej fabule. Używając axins.xaxis.set_major_locator(plt.NullLocator()), gdzie axinsjest zwracany obiekt axins = zoomed_inset_axes()(funkcja importowana z mpl_toolkits.axes_grid1.inset_locator).
Dennis Soemers,

28

Spróbuj to usunąć etykiety (ale nie kleszcze):

import matplotlib.pyplot as plt

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

przykład


3
setpjest w trybie pylab, nie można go używać w stosunku do poszczególnych osi
przerywany

1
A co z interfejsem obiektowym?
ifly6

To była jedyna odpowiedź, która również działała dla mnie w przypadku wykresów 3D. Dzięki za to!
Brent

13

Ten fragment kodu może pomóc w usunięciu tylko xticks.

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

Ten fragment kodu może pomóc usunąć xticks i yticks oba.

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
Wersja zorientowana obiektowo toax.tick_params()
Marcelo Villa-Piñeros,

1
Ponadto używanie offi onjest przestarzałe. 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

Ci z was, którzy szukają krótkiego polecenia, aby wyłączyć wszystkie tiki i etykiety, powinni być w porządku

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

co pozwala na wpisanie bool odpowiednich parametrów od wersji matplotlib> = 2.1.1

W przypadku niestandardowych ustawień zaznaczania pomocne są dokumenty:

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.