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.