matplotlib 플롯에서 축 텍스트 숨기기


370

축 중 하나에 눈금이나 숫자가없는 그림을 그리려고합니다 (나는 matplotlib 명명법이 아닌 전통적인 의미로 축을 사용합니다!). 내가 겪은 문제는 matplotlib이 값 N을 빼서 x (y) 틱 레이블을 조정 한 다음 축의 끝에 N을 추가하는 것입니다.

이것은 모호 할 수 있지만 다음의 간단한 예는 문제를 강조하며 '6.18'은 N의 위반 값입니다.

import matplotlib.pyplot as plt
import random
prefix = 6.18

rx = [prefix+(0.001*random.random()) for i in arange(100)]
ry = [prefix+(0.001*random.random()) for i in arange(100)]
plt.plot(rx,ry,'ko')

frame1 = plt.gca()
for xlabel_i in frame1.axes.get_xticklabels():
    xlabel_i.set_visible(False)
    xlabel_i.set_fontsize(0.0)
for xlabel_i in frame1.axes.get_yticklabels():
    xlabel_i.set_fontsize(0.0)
    xlabel_i.set_visible(False)
for tick in frame1.axes.get_xticklines():
    tick.set_visible(False)
for tick in frame1.axes.get_yticklines():
    tick.set_visible(False)

plt.show()

내가 알고 싶은 세 가지는 :

  1. 처음 에이 동작을 끄는 방법 (대부분의 경우 유용하지만 항상 유용한 것은 아닙니다!) 나는 살펴 보았고 matplotlib.axis.XAxis적절한 것을 찾을 수 없습니다

  2. 어떻게하면 (즉, N 사라지게 할 수 있습니다 X.set_visible(False))

  3. 어쨌든 위의 작업을 수행하는 더 좋은 방법이 있습니까? 내 마지막 줄거리는 그림에서 4x4 서브 플로트가 될 것입니다.


여기에있는 답변 중 하나라도 실제로 질문에 대답하는지 의심합니다. 나에게 그것은 오프셋을 제거 하는 방법을 묻는 질문처럼 보입니다 . 그러나 모든 답변은 모든 눈금 레이블을 제거하는 방법을 다양하게 보여줍니다 . 질문이 답변에 의해 감독 된 경우, 답변이 어떤 솔루션을 제공하는지 묻는 질문을 편집해야합니까?
ImportanceOfBeingErnest

답변:


471

각 요소를 숨기는 대신 전체 축을 숨길 수 있습니다.

frame1.axes.get_xaxis().set_visible(False)
frame1.axes.get_yaxis().set_visible(False)

또는 틱을 빈 목록으로 설정할 수 있습니다.

frame1.axes.get_xaxis().set_ticks([])
frame1.axes.get_yaxis().set_ticks([])

이 두 번째 옵션에서, 당신은 여전히 사용할 수 있습니다 plt.xlabel()plt.ylabel()축에 레이블을 추가 할 수 있습니다.


2
이봐 Ofri-정말 고마워.하지만 xlabel ()을 추가하고 싶을 때 어떻게됩니까? 텍스트 위젯을 수동으로 배치하는 것 외에
Dave

5
이 예제를 어떻게 3D로 확장 할 수 있습니까? ax = plt.gca (projection = '3d'), ax.axes.get_zaxis (). set_visible (False)는 다음을 제공합니다'Axes3DSubplot' object has no attribute 'get_zaxis'
user989762

13
이 답변으로 그리드 선을 표시 할 수 없습니다. @saullo castro의 답변은 그래도 ...
evan54

그냥 문제를 해결 @Saullo 카스트로의 답변을 보았다 : 문제는 X_AXIS가 보이지 않는로 설정되어있을 때, 그리드 dsappears :( 편집한다는 것입니다.
Shailen

1
@ user989762 귀하의 경우이 방법은 작동하지 않습니다 get_xaxis().set_visible(False). 이 경우 matplotlib은 플롯이 2D 인 것처럼 일부 매개 변수를 초기화한다고 생각합니다. ax.set_zticks([])당신이 원하는 것을 할 것입니다
kon psych

222

그리드 선을 유지하는 축 텍스트 만 숨기려면

frame1 = plt.gca()
frame1.axes.xaxis.set_ticklabels([])
frame1.axes.yaxis.set_ticklabels([])

이렇게 set_visible(False)set_ticks([])또한 격자 선을 숨 깁니다.


4
이에 대한 레이블을 삭제 모든 줄거리를 공유하는 축이 : /
endolith

136

당신이 나와 같고 항상 좌표축을 검색하지 않는 ax경우, 그림을 그릴 때 간단한 해결책은

plt.xticks([])
plt.yticks([])

56

다소 오래된 스레드이지만 최신 버전의 matplotlib을 사용하는 더 빠른 방법 인 것 같습니다.

x 축의 주요 포맷터를 설정

ax.xaxis.set_major_formatter(plt.NullFormatter())

1
한 번의 진드기에만 사용하려면 어떻게해야합니까?
tommy.carstensen 2016

5
.set_xticks ([])도 눈금 표시 자체를 제거하므로 레이블 만 숨기는 데 유용합니다.
zbyszek

49

실제로 여기의 코드 스 니펫 (답변에서 수락 된 코드 스 니펫)을 기반으로 테두리 나 축 데이터가없는 이미지를 렌더링 할 수 없었습니다. 일부 API 문서를 파고 들자 이미지를 렌더링하기 위해이 코드를 방문했습니다.

plt.axis('off')
plt.tick_params(axis='both', left='off', top='off', right='off', bottom='off', labelleft='off', labeltop='off', labelright='off', labelbottom='off')
plt.savefig('foo.png', dpi=100, bbox_inches='tight', pad_inches=0.0)

tick_params호출을 사용하여 렌더링 될 수있는 추가 정보를 기본적으로 종료하고 출력 파일에 완벽한 그래프가 있습니다.


1
축이 공유되면 set_ticklabels 기반 솔루션이 공유 축에 전파됩니다. tick_params를 기반으로 한이 솔루션 만 제대로 작동했습니다.
Christian O'Reilly

39

프로세스를 쉽게하기 위해이 그림을 색상으로 코딩했습니다.

import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)

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

이 명령을 사용하여 그림을 완전히 제어하고 스플라인에 대한 제어도 추가 한 답변을 완료 할 수 있습니다.

ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)

# X AXIS -BORDER
ax.spines['bottom'].set_visible(False)
# BLUE
ax.set_xticklabels([])
# RED
ax.set_xticks([])
# RED AND BLUE TOGETHER
ax.axes.get_xaxis().set_visible(False)

# Y AXIS -BORDER
ax.spines['left'].set_visible(False)
# YELLOW
ax.set_yticklabels([])
# GREEN
ax.set_yticks([])
# YELLOW AND GREEN TOGHETHER
ax.axes.get_yaxis().set_visible(False)

ax.set_xticklabels([])그리고 ax.set_xticks([])나를 위해 일을하지 않았다,하지만 ax.axes.get_xaxis().set_visible(False)했다.
Homero Esmeraldo

2
이것은 정답
Jason S

6

객체 지향 API를 사용하는 경우, Axes객체는 축 텍스트를 제거하기위한 두 가지 유용한 방법을 가지고 set_xticklabels()set_xticks().

당신이 사용하여 줄거리를 만들어

fig, ax = plt.subplots(1)
ax.plot(x, y)

눈금 레이블을 제거하려는 경우

ax.set_xticklabels([])

또는 진드기를 완전히 제거하려면

ax.set_xticks([])

이 방법은 눈금을 원하는 위치와 레이블을 지정하는 방법을 정확하게 지정하는 데 유용합니다. 빈 목록을 전달하면 각각 눈금이 없거나 레이블이 없습니다.


2

한 가지 트릭은 눈금 레이블의 색상을 흰색으로 설정하여 숨길 수 있습니다!

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