본문 바로가기
Python/Python FAQ

Python matplotlib 그림에서 축 텍스트를 숨기기, Hiding axis text in matplotlib plots

by 베타코드 2023. 10. 8.
반응형

질문


나는 무늬나 숫자가 없는 축(나는 matplotlib 용어가 아닌 전통적인 의미의 축을 사용한다!)으로 그림을 그리려고 한다. 내가 마주친 문제는 matplotlib이 x(y)ticklabels을 값 N을 빼고 축 끝에 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 하위 플롯이 포함된 그림이 될 것이다.


답변


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

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

반응형

댓글