[python] matplotlib에서 상단 축과 오른쪽 축을 어떻게 제거합니까?

기본 “박스형”축 스타일 대신 왼쪽 및 아래쪽 축만 갖고 싶습니다.

+------+         |
|      |         |
|      |   --->  |
|      |         |
+------+         +-------

이것은 쉬워야하지만 문서에서 필요한 옵션을 찾을 수 없습니다.



답변

이 공식 웹 사이트에서 제안하기 matplotlib 3 솔루션입니다 여기 :

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)

ax = plt.subplot(111)
ax.plot(x, y)

# Hide the right and top spines
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)

# Only show ticks on the left and bottom spines
ax.yaxis.set_ticks_position('left')
ax.xaxis.set_ticks_position('bottom')

plt.show()

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


답변

또는이

def simpleaxis(ax):
    ax.spines['top'].set_visible(False)
    ax.spines['right'].set_visible(False)
    ax.get_xaxis().tick_bottom()
    ax.get_yaxis().tick_left()

회전 된 레이블 지원을 잃지 않고 축에 동일한 효과를 얻는 것 같습니다.

(Matplotlib 1.0.1; 이것에서 영감을 얻은 솔루션 ).


답변

[편집] matplotlib (버전 1.3.0) (지금 포함) (2013-10)

이 기능은 실제로 추가되었으므로 Subversion 버전이 필요합니다. 여기 에서 예제 코드를 볼 수 있습니다 .

온라인 에서 더 좋은 예가 있다고 말하기 위해 업데이트 중입니다. 그래도 Subversion 버전이 필요하지만 아직 출시되지 않았습니다.

[편집] Matplotlib 0.99.0 RC1이 방금 릴리스되었으며이 기능이 포함되어 있습니다.


답변

(이것은 포괄적 인 답변 외에도 여기에 대한 확장 설명입니다.)


이 세 요소 각각을 서로 독립적으로 숨길 수 있습니다.

  • 경계를 숨기려면 (일명 “척추”) : ax.set_frame_on(False)또는ax.spines['top'].set_visible(False)

  • 진드기를 숨기려면 ax.tick_params(top=False)

  • 레이블을 숨기려면 ax.tick_params(labeltop=False)


답변

진드기 등이 필요하지 않은 경우 (예 : 질적 그림 그리기)이 빠른 해결 방법을 사용할 수도 있습니다.

축을 보이지 않게하고 (예 :로 plt.gca().axison = False) 축 으로 수동으로 그립니다 plt.arrow.


답변

Seaborn 라이브러리에는 despine () 함수가 내장되어 있습니다.

다음을 추가하십시오.

import seaborn as sns

이제 그래프를 작성하십시오. 그리고 끝에 추가하십시오 :

sns.despine()

함수의 기본 매개 변수 값 중 일부를 보면 위쪽 및 오른쪽 척추를 제거하고 아래쪽 및 왼쪽 척추를 유지합니다.

sns.despine(top=True, right=True, left=False, bottom=False)

https://seaborn.pydata.org/generated/seaborn.despine.html 에서 추가 문서를 확인하십시오.


답변

모든 플롯에서 제거해야하는 경우 스타일 설정 (스타일 시트 또는 rcParams)에서 스파인을 제거 할 수 있습니다. 예 :

import matplotlib as mpl

mpl.rcParams['axes.spines.right'] = False
mpl.rcParams['axes.spines.top'] = False

모든 척추를 제거하려는 경우 :

mpl.rcParams['axes.spines.left'] = False
mpl.rcParams['axes.spines.right'] = False
mpl.rcParams['axes.spines.top'] = False
mpl.rcParams['axes.spines.bottom'] = False