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()
제가 알고 싶은 세 가지는 다음과 같습니다.
처음부터 이 동작을 해제하는 방법(대부분의 경우 유용하지만 항상 유용한 것은 아닙니다)훑어보았다
matplotlib.axis.XAxis
적절한 것을 찾을 수 없습니다.어떻게 하면 N이 사라지게 할 수 있을까요?
X.set_visible(False)
)어쨌든 위에 더 좋은 방법이 있을까요?내 마지막 그림은 그림에서 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를 Axes
object에는 축 텍스트를 삭제하는 두 가지 유용한 방법이 있습니다.및
다음 방법을 사용하여 그림을 만든다고 가정합니다.
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
'itsource' 카테고리의 다른 글
mysql에서 해당 달의 첫날을 얻는 방법은 무엇입니까? (0) | 2022.09.17 |
---|---|
Vue를 사용한 클릭 투 편집 텍스트 필드 (0) | 2022.09.17 |
JavaScript를 사용하여 전체 경로에서 파일 이름을 가져오려면 어떻게 해야 합니까? (0) | 2022.09.17 |
pip을 사용하여 Python MySQLdb 모듈을 설치하는 방법 (0) | 2022.09.17 |
텍스트 파일에서 mysql 데이터베이스로 데이터를 가져오는 방법 (0) | 2022.09.17 |