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


133

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

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

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

답변:


153

이 공식 웹 사이트에서 제안하기 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()

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


2
이것은 matplotlib의 최신 버전에서 허용되는 답변보다 낫습니다.
ffledgling

3
초보자를위한 추가 질문 : Matplotlib API 문서를 기반으로이 답변을 어디에서 찾을 수 있습니까? 내가 거기에 가면 : matplotlib.org/api/axes_api.htmlspine 객체에 대한 참조 가 없으며이 키워드를 추측하지 않았을 것입니다.
Eric Burel

63

또는이

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; 이것에서 영감을 얻은 솔루션 ).


33

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

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

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

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


예를 들어 회전 레이블로 위를 사용하기 전에 눈금 표시 지원이 불완전하다는 matplotlib.sourceforge.net/mpl_toolkits/axes_grid/users/… 경고를 읽으십시오 !
timday

축을 구성하는 방법에 따라 달라집니다. 에 의해 생성 된 축을 mpl.subplots이런 식으로 사용할 수 없습니까?
Stefan van der Walt

8
예제 링크가 끊어졌습니다.
mkosmala

10

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


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

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

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

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


가능성에 대한 좋은 요약. +1
Loved.by.Jesus

9

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

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


1
이것은 척추를 제거하는 것처럼 보이지만 진드기는 표시합니다. 진드기를 제거하는 방법에 대한 아이디어가 있습니까?
Rob Young

2
@Rob : 당신이 옳습니다. 저는 실제로 생각했던 스크립트에서 다른 솔루션을 사용했습니다. 내 대답을 변경했는데 이제 작동하지만 일반적으로 위의 허용 된 솔루션이 더 좋습니다.
nikow

9

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 에서 추가 문서를 확인하십시오.


7

모든 플롯에서 제거해야하는 경우 스타일 설정 (스타일 시트 또는 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.