2016-08-26 4 views
0

먼저 plt.show을 호출하지 않고 matplotlib 축의 눈금 라벨을 얻는 방법은 무엇입니까? 나는 많은 서브 플로트를 설정하고 창 제한과 눈금 레이블을 조작 한 다음 화면 전체에 함께 표시하려고합니다. 그러나, get_xticklabels() 방법은 plt.show가 호출되지 않으면 빈 문자열을 반환그림을 그리기 전에 matplotlib에서 축 틱을 얻습니다.

import matplotlib.pyplot as plt 
fig, ax = plt.subplots(1, 1) 
ax.plot(1, 1)  

print("before plt.show(): {}".format(ax.get_xticklabels()[0].get_text())) 
plt.show() 
print("after plt.show(): {}".format(ax.get_xticklabels()[0].get_text())) 

출력 : 실제로 표시되는 그림 전에 레이블을 을 받고 시도하기 위해 예상되는 동작이

In [33]: %run plt_premature_ticks.py 
before plt.show(): 
after plt.show(): 0.94 

아닌가? fig.canvas.draw()ax.get_xticklabels() 전에

답변

3

추가

import matplotlib.pyplot as plt 
fig, ax = plt.subplots(1, 1) 
ax.plot(1, 1)  
fig.canvas.draw() 
print("before plt.show(): {}".format(ax.get_xticklabels()[0].get_text())) 
plt.show() 
print("after plt.show(): {}".format(ax.get_xticklabels()[0].get_text())) 
0

HYRY 원래의 질문에 대한 정확한 답을 준 동안, 나는 하나가 인스턴스의 draw 메소드를 호출해야합니다 몇 가지 경우를 통해 왔어요 진드기 레이블을 볼 수있게합니다. 이 경우 다음을 호출해야합니다.

renderer = fig.canvas.get_renderer() 
ax.draw(renderer) 
관련 문제