[python] matplotlib 플롯에서 축 텍스트 숨기기

축 중 하나에 눈금이나 숫자가없는 그림을 그리려고합니다 (나는 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. 어쨌든 위의 작업을 수행하는 더 좋은 방법이 있습니까? 내 마지막 줄거리는 그림에서 4×4 서브 플로트가 될 것입니다.



답변

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

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()축에 레이블을 추가 할 수 있습니다.


답변

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

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

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


답변

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

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


답변

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

x 축의 주요 포맷터를 설정

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


답변

실제로 여기의 코드 스 니펫 (답변에서 수락 된 코드 스 니펫)을 기반으로 테두리 나 축 데이터가없는 이미지를 렌더링 할 수 없었습니다. 일부 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호출을 사용하여 렌더링 될 수있는 추가 정보를 기본적으로 종료하고 출력 파일에 완벽한 그래프가 있습니다.


답변

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

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)


답변

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

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

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

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

ax.set_xticklabels([])

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

ax.set_xticks([])

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