2012-10-21 11 views
145

Mam spisek semilogks i chciałbym usunąć xticks. Próbowałem:Usunąć xticks w wątku matplotlib?

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

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

Odpowiedz

249

Metoda tick_params jest bardzo przydatna w przypadku takich rzeczy. Ten kod wyłącza znaczniki główne i pomniejsze 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='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

Doceniam jak to odpowiedzi nie tylko na pytanie, ale zapewnia szablon do toczenia kilka rzeczy off/on. Dotyczy to zarówno osi X, jak i Y: 'plt.tick_params (axis = 'both', który = 'both', bottom = 'off', top = 'off', labelbottom = 'off', right = 'off ', left =' off ', labelleft =' off ') ' –

+1

Co, jeśli jest to wykres 3D? –

+11

To jest świetna odpowiedź. Dla osób szukających wersji oo, "osie" mają tę samą metodę ['tick_params'] (http://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes.tick_params). –

34

istnieje lepsza i prostsza, rozwiązanie niż jednej określonej przez Johna Vinyard. Użyj tej opcji, aby pomóc.

+15

"Lepiej" jest dyskusyjne, ale +1 dla alternatywy. – bernie

20

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

import matplotlib.pyplot as plt 

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

example

+1

'setp' jest w trybie pylab, nie może być użyte przeciwko poszczególnym osiom – dashesy

54

Niezupełnie co OP prosi o, ale w prosty sposób wyłączyć wszystkie osie linii, kleszcze i etykiety jest po prostu zadzwonić:

plt.axis('off') 
+6

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

41

Oto alternatywne rozwiązanie, które znalazłem na 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

Alternatywnie, można przekazać pustą pozycję zaznaczyć i etykietę jako

plt.xticks([], []) 
Powiązane problemy