Bir matplotlib grafiğinde xticks kaldırılsın mı?


290

Semilogx çizimim var ve xticks'i kaldırmak istiyorum. Denedim:

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

Izgara kaybolur (tamam), ancak küçük keneler (ana kenelerin yerinde) kalır. Nasıl kaldırılır?


Bazı çözümler benim için işe yaramadı. Ancak buradaki örneklerin sadece küçük bir değişikliği: ax.set_xticks([], [])ve çözüldü ...
TravelTrader

Yanıtlar:


464

tick_paramsYöntem bu gibi şeyler için çok yararlıdır. Bu kod, büyük ve küçük keneleri kapatır ve etiketleri x ekseninden kaldırır.

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()

resim açıklamasını buraya girin


87
Bunun sadece soruyu nasıl cevapladığını değil, aynı zamanda birkaç şeyi kapatmak / açmak için de bir şablon sağladığını takdir ediyorum. Bu, sonucu hem x hem de y eksenlerine uygular:plt.tick_params(axis='both', which='both', bottom='off', top='off', labelbottom='off', right='off', left='off', labelleft='off')
Steven C. Howell

2
3D bir çizimse ne olur?
tommy.carstensen

38
Bu harika bir cevap. Oo sürümünü arayanlar için axesaynı tick_paramsyönteme sahiptir.
Mad Physicist

22
Daha yeni sürümlerinde matplotlib, değiştirmek gerekir 'on'ile Trueve 'off'ile False.
BallpointBen

1
Yanıt, OOP arayüzü ve daha yeni sürüm sözdizimi için güncellenmelidir.
ifly6

142

OP'nin tam olarak istediği şey değil, ancak tüm eksen çizgilerini, keneleri ve etiketleri devre dışı bırakmanın basit bir yolu:

plt.axis('off')

26
İhtiyacım olan şey teşekkürler. Nesneye yönelik sürüm ax.axis('off')mevcut bir eksen örneğinde olacaktır.
PlasmaBinturong

5
nasıl sadece xaxis için?
qrtLs

82

Alternatif olarak, boş bir tik konumunu ve etiketini

# 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
Var olan bir eksen örneğiniz varsa, diyelim ki axşunları kullanabilirsiniz:ax.set_xticks([], [])
Guilherme Salomé

@ GuilhermeSalomé şimdi bir uyarı veriyor, "Matplotlib 3.2'den beri set_xticks () 'nin küçük parametresini geçerek konumdan kaldırılıyor; parametre yalnızca iki küçük sürümden sonra anahtar kelime olacak." Şimdi doğru çözüm nedir?
Rylan Schaeffer

2
@RylanSchaeffer ax.set_xticks([])büyük keneler ax.set_xticks([], minor=True)için, küçük keneler için. İle Benzerleri pyplotvardır plt.xticks([])ve plt.xticks([], minor=True).
Anakhand


42

John Vinyard tarafından verilenlerden daha iyi ve daha basit bir çözüm var. Kullanım NullLocator:

import matplotlib.pyplot as plt

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

Umarım yardımcı olur.


22
"Daha iyi" tartışmalı, ancak alternatif için +1.
mechanical_meat

Bu çözümün bir varyantı da, hedef, yalnızca "yakınlaştırılmış" bir girişten xticks kaldırmak ve bunları ana arsada tutmak olduğunda benim için çalıştı. Kullanarak axins.xaxis.set_major_locator(plt.NullLocator())burada, axinsdönen bir amacı axins = zoomed_inset_axes()(ithal fonksiyonu mpl_toolkits.axes_grid1.inset_locator).
Dennis Soemers

28

Etiketleri kaldırmak için bunu deneyin (ancak keneleri değil):

import matplotlib.pyplot as plt

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

misal


3
setppylab modunda, ayrı eksenlere karşı kullanılamaz
dashesy

1
Nesne yönelimli arayüze ne dersiniz?
ifly6

Benim için 3B grafikler için de işe yarayan tek cevap buydu. Bunun için teşekkürler!
Brent

13

Bu snippet, yalnızca xticks'in kaldırılmasına yardımcı olabilir.

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

Bu snippet, her ikisinin de xticks ve yticks kaldırılmasına yardımcı olabilir.

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
Bunun nesneye yönelik versiyonuax.tick_params()
Marcelo Villa-Piñeros

1
Ayrıca, offve onöğelerinin kullanımı da kullanımdan kaldırılmıştır. MatplotlibDeprecationWarning: Passing one of 'on', 'true', 'off', 'false' as a boolean is deprecated; use an actual boolean (True/False) instead.
Marcelo Villa-Piñeros

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.