2017-12-18 7 views

답변

1

나는 당신이 완전히 바른 길에 있다고 생각합니다. 문제는 패딩에 좋은 매개 변수를 찾아서 축 안에 ticklabels을 갖는 것입니다. 패딩은 점으로 측정되므로 0.5보다 큰 숫자를 사용하는 것이 좋습니다. 또한 텍스트의 정렬로 인해 x 축과 y 축의 패딩이 다릅니다.

import matplotlib.pyplot as plt 

fig, ax = plt.subplots() 
ax.tick_params(axis="y",direction="in", pad=-22) 
ax.tick_params(axis="x",direction="in", pad=-15) 

plt.show() 

enter image description here

3

업데이트

나는 완전히 tick_params에서 pad PARAM에 대해 잊어 버렸습니다. @ImportanceOfBeingErnest’s answer을 사용하면 질문에 더 적합합니다.

그럼에도 불구하고 여기에 답을 남겨 두겠다. 예를 들어 thick_params과 같은 일반적인 방법으로는 사용할 수 없다면 같은 목표를 달성 할 수있는 방법을 예로 들겠다.

---

나는 이것을 달성하기위한 공식적인 방법을 모르고있다. 하지만 '하드 코딩'할 수 있습니다. 당신은 단지 내부에 눈금을 갖고 싶어

, 당신은 실행해야합니다

ax.tick_params(direction="in") 

을 이제 플롯 영역 내부의 레이블을 이동하려면, 당신은, 진드기에 패딩을 추가 할 필요가 다음과 같습니다 :

TICK_PADDING = -10 

xticks = [*ax.xaxis.get_major_ticks(), *ax.xaxis.get_minor_ticks()] 
yticks = [*ax.yaxis.get_major_ticks(), *ax.yaxis.get_minor_ticks()] 

for tick in (*xticks, *yticks): 
     tick.set_pad(TICK_PADDING) 

x 및 y 틱에 다른 패딩을 사용해야 할 수도 있습니다. 어떤 경우에는 다음을 수행해야합니다.

X_TICK_PADDING = -10 
Y_TICK_PADDING = -20 

xticks = [*ax.xaxis.get_major_ticks(), *ax.xaxis.get_minor_ticks()] 
yticks = [*ax.yaxis.get_major_ticks(), *ax.yaxis.get_minor_ticks()] 

for tick in xticks: 
    tick.set_pad(X_TICK_PADDING) 

for tick in yticks: 
    tick.set_pad(Y_TICK_PADDING) 

꽤 좋지는 않지만 작동합니다. 이것이 당신이 원하는 것이라면 알려주십시오.

+0

이 코드는 다른 답변과 똑같은 코드 라인을 사용합니다. 당신은'tick_params'만을 사용하는 것보다 이것이 더 바람직한 이유에 대해 논할 수 있습니까? – ImportanceOfBeingErnest

+0

'tick_params'에서'pad' 매개 변수를 놓쳤습니다. 당신의 대답에있는 방법이 제 것보다 낫다고 생각합니다. 이제 네가 왜 엎드려서 엎질러 졌는지, 내가 채집 한 것이 궁금해 ..? – TPVasconcelos

+0

나는 내 대답을 업데이트했습니다 – TPVasconcelos