itsource

matplotlib 그림에서 축 텍스트 숨기기

mycopycode 2022. 9. 17. 09:58
반응형

matplotlib 그림에서 축 텍스트 숨기기

두 축 모두에 눈금이나 숫자가 없는 도형을 표시하려고 합니다(저는 matplotlib 명명법이 아닌 전통적인 의미의 축을 사용합니다!).matplotlib가 값 N을 빼서 x(y) ticklabel을 조정하고 축 끝에 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()축에 레이블을 추가합니다.

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

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

하고있다set_visible(False)또는set_ticks([])그리드 선도 숨깁니다.

네가 나처럼 항상 도끼를 회수하지 않는다면ax그림을 그릴 때, 간단한 해결책은 다음과 같습니다.

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

작업을 쉽게 하기 위해 이 그림을 색상으로 구분했습니다.

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 문서를 뒤진 후 이미지를 렌더링하기 위해 이 코드를 찾았습니다.

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

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

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

x축의 메이저포메터를 설정합니다.

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

하나의 트릭은 티크 라벨의 색상을 흰색으로 설정하여 숨기는 것입니다.

plt.xticks(color='w')
plt.yticks(color='w')

또는 좀 더 일반화(@Armin Okiich)하기 위해 다음과 같이 설정할 수 있습니다."None".

API를 Axesobject에는 축 텍스트를 삭제하는 두 가지 유용한 방법이 있습니다.및

다음 방법을 사용하여 그림을 만든다고 가정합니다.

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

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

ax.set_xticklabels([])

진드기를 완전히 없애려면

ax.set_xticks([])

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

'만들다'로 하시면 됩니다.xlabel로로 합니다.None츠미야을 사용한 예제입니다.

from matplotlib import pyplot as plt
import seaborn as sns

tips = sns.load_dataset("tips")

ax = sns.boxplot(x="day", y="total_bill", data=tips)
ax.set(xlabel=None)

plt.show()

언급URL : https://stackoverflow.com/questions/2176424/hiding-axis-text-in-matplotlib-plots

반응형