2015-01-13 1 views
2

나는 y- 틱의 위치를 ​​ax.get_yticks() (btw., 그 (것)들을 얻는 가장 좋은/올바른 방법입니까?)으로 얻을 수 있음을 알고 있습니다. 하지만 축 한계 (즉, 0과 1 사이)를 기준으로 틱 위치가 필요합니다. 그것을 얻는 가장 좋은 방법은 무엇입니까? ax.get_yticks(transform=ax.transAxes)을 시도했는데 작동하지 않습니다.matplotlib 축 관련 틱 위치 얻기

+0

나는 모든 – tacaswell

+2

의 질문을 이해하지 않습니다. – hitzg

+0

정확 하 게, 감사합니다! 그게 내가 찾고있는거야. – frixhax

답변

3

이 변환은 손으로 쉽게 수행 할 수 있습니다

로그 스케일과 협력을 얻으려면

y_min, y_max = ax.get_ylim() 
ticks = [(tick - y_min)/(y_max - y_min) for tick in ax.get_yticks()] 

UPDATE, 우리는 matplotlib.transforms을 채택 할 필요가있다. 그러나 변환은 (x,y) 점에서 작동 할 수 있으므로 약간의 X 좌표, Y 진드기 (예를 들어, 제로) 보완 제 필요

crd = np.vstack((np.zeros_like(ax.get_yticks()), ax.get_yticks())).T 

그렇다면 우리는 표시 데이터의 좌표를 변환하고 축 및 취할 수 그것의 y 열 : 나는 그가 축 좌표의 눈금 위치를하고 싶어 생각 @tcaswell

ticks = ax.transAxes.inverted().transform(ax.transData.transform(crd))[:,1] 
+0

좋은 해결책! 축이 로그 스케일이면 실패 할 수도 있습니다. – hitzg

+0

정확히 - 내가하고있는 일이 효과적이기 때문입니다. 그러나 좀 더 일반적인 접근법이있을 수 있습니까? – frixhax

+0

좀 더 일반적인 접근법을 사용하면 항상 변형을 할 수 있지만, 훨씬 성 가시고 파이썬 적이 아닙니다. 그럼에도 불구하고, 완성을 위해 나는 그것을 답에 추가 할 것입니다. –