matplotlib 플롯에서 xticks를 제거 하시겠습니까?


290

semilogx 플롯이 있고 xticks를 제거하고 싶습니다. 나는 시도했다 :

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

그리드가 사라지지만 (주) 진드기 위치에 작은 진드기가 남아 있습니다. 그것들을 제거하는 방법?


일부 솔루션이 저에게 효과가 없었습니다. 그러나 여기 예제의 약간의 변화 : ax.set_xticks([], [])그리고 해결되었습니다 ...
TravelTrader

답변:


464

tick_params방법은 이와 같은 것들에 매우 유용합니다. 이 코드는 주 눈금과 부 눈금을 끄고 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()

여기에 이미지 설명을 입력하십시오


87
이것이 질문에 대답 할뿐만 아니라 여러 가지를 켜거나 끄는 템플릿을 제공하는 방법에 감사드립니다. 이는 x 및 y 축 모두에 결과를 적용합니다.plt.tick_params(axis='both', which='both', bottom='off', top='off', labelbottom='off', right='off', left='off', labelleft='off')
Steven C. Howell

2
그것이 3D 플롯이라면?
tommy.carstensen

38
이것은 좋은 대답입니다. oo 버전을 찾는 사람들에게는 axes동일한 tick_params방법이 있습니다.
Mad Physicist

22
새로운 버전에서는 matplotlib, 당신은 교체해야 'on'True'off'함께 False.
BallpointBen

1
OOP 인터페이스 및 최신 버전 구문에 대한 답변을 업데이트해야합니다.
ifly6

142

OP가 요구하는 것이 아니라 모든 축 선, 눈금 및 레이블을 비활성화하는 간단한 방법은 다음과 같습니다.

plt.axis('off')

26
감사의 말 객체 지향 버전은 ax.axis('off')기존 좌표축 인스턴스에 있습니다.
PlasmaBinturong 2016 년

5
xaxis에만 어떻게?
qrtLs

82

또는 빈 눈금 위치를 전달하고 레이블을 다음과 같이 지정할 수 있습니다.

# 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
기존 축 인스턴스가있는 경우 ax다음과 같이 사용할 수 있습니다.ax.set_xticks([], [])
Guilherme Salomé

@ GuilhermeSalomé는 이제 Matplotlib 3.2 이후로 set_xticks ()의 부 매개 변수를 위치 적으로 전달하는 것이 더 이상 사용되지 않으며,이 매개 변수는 나중에 키워드로만 사용됩니다. 지금 올바른 해결책은 무엇입니까?
Rylan Schaeffer

2
ax.set_xticks([])주요 진드기, ax.set_xticks([], minor=True)경미한 진드기의 경우 @RylanSchaeffer . 와 등가물 pyplotplt.xticks([])plt.xticks([], minor=True)입니다.
Anakhand


42

John Vinyard가 제공하는 솔루션보다 더 우수하고 간단한 솔루션이 있습니다. 사용 NullLocator:

import matplotlib.pyplot as plt

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

희망이 도움이됩니다.


22
"더 나은"은 논쟁의 여지가 있지만 대안으로 +1입니다.
mechanical_meat

이 솔루션의 변형은 목표가 "확대"인셋에서 xticks 만 제거하고 주요 플롯을 유지하는 것이 목표였습니다. 사용 axins.xaxis.set_major_locator(plt.NullLocator())하는 경우, axins에 의해 반환되는 객체입니다 axins = zoomed_inset_axes()(수입 기능 mpl_toolkits.axes_grid1.inset_locator).
Dennis Soemers

28

레이블을 제거하려면이 방법을 사용하십시오 (틱은 제외).

import matplotlib.pyplot as plt

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


3
setppylab 모드에 있고, 개별 축에 대해 사용될 수 없습니다
dashesy

1
객체 지향 인터페이스는 어떻습니까?
ifly6

이것은 나를 위해 3D 플롯에서도 효과가있는 유일한 대답이었습니다. 감사합니다!
브렌트

13

이 스 니펫은 xticks 만 제거하는 데 도움이 될 수 있습니다.

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

이 스 니펫은 xticks와 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
이것의 객체 지향 버전은 다음과 같습니다ax.tick_params()
Marcelo Villa-Piñeros

1
또한, 사용 offon사용되지 않습니다. MatplotlibDeprecationWarning: Passing one of 'on', 'true', 'off', 'false' as a boolean is deprecated; use an actual boolean (True/False) instead.
Marcelo Villa-Piñeros

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.