2014-12-06 2 views
0

twinx를 사용하여 두 번째 축을 만든 후 첫 번째 축에서 축 autoscale이 작동하지 않음을 발견했습니다. 예상 되나요? twinx() 후 Matplotlib axes autoscale이 작동하지 않습니다.

import numpy as np 
import matplotlib.pyplot as plt 

x = np.arange(0, 10, 0.1) 
y1 = 0.05 * x**2 
y2 = -1 *y1 

fig, axL = plt.subplots() # Make Left Axes 
axR = axL.twinx() # Make Left Axes 
axL.plot(x, y1, 'g-') # Plot on Left 
axL.grid() 
axL.autoscale(enable=True, axis=u'both', tight=False) 
plt.show() 
# Do some stuff then later plot on axR 

I 그것이 (0 ~ 5) 왼쪽 축에 제대로 Y 방향 autoscales 대신 올바른 0~10의 +/- 0.06 x 축 배율 변경 위의 코드를 실행

. 그러나 axR이 더 이상 공백이 아니며 axR에 무엇인가가 그려지면 예상대로 동작합니다.

이것은 더 복잡한 PyQT4 GUI에서이 문제를 처음으로 경험했기 때문에 사용자가 복수의 서브 플로트 & 왼쪽/오른쪽 조합을 만들 수 있습니다. 사용자가 플롯 생성 순서를 수동으로 제어하는 ​​사용자이기 때문에 위의 상황이 스스로 나타날 수 있습니다.

공백 쌍 축 오른쪽 축을 사용하여 자동 크기 조정을 수행 할 수있는 방법이 있습니까? 아니면 Xlimit을 수동으로 설정해야합니까?

참고로, 나는하기 matplotlib 1.3

감사와 아나콘다 V2.0.1의 일환으로 파이썬 3.4을 사용하고 있습니다.

답변

1

이것은 적절한 해결책이나 설명보다는 해결 방법 일뿐입니다. 완전히 비어 있지 않도록

단순히 올바른 축에 보이지 않는 점을 추가 :

axR.plot(0, 0, visible=False) 

당신은 보이지 않는 점은 당신이 axL에 플롯 데이터의 범위 내에서 거짓말을하지만 확인해야 . 예컨대 :

(내가 추측하고있어)에 대한 설명으로

axR.plot(np.mean(x),np.mean(y1),visible=False) 
:

axR.dataLim 처음 [-np.inf, np.inf]입니다. axR.dataLimaxL.dataLim의 합집합은 여전히 ​​[-np.inf, np.inf]이고 이는 [0,0]으로 축소됩니다.


편집 :이 (here) 최근에 수정되었습니다. matplotlib v1.4. *로 업그레이드하면 문제가 해결됩니다.

+0

감사합니다. 필자는 개인용 컴퓨터에서 matplotlib를 업그레이드 한 후이를 테스트했으며 예상대로 작동했습니다. 불행하게도 모든 일이 통제되므로 내가 똑같이하도록 설득 할 수 있는지 알아봐야 할 것입니다. –

관련 문제