[PYTHON] matplotlib.pyplot / pylab isinteractive ()가 실행되는 동안 ipython을 사용하여 그림을 업데이트하지 않습니다. -pylab [duplicate]
PYTHONmatplotlib.pyplot / pylab isinteractive ()가 실행되는 동안 ipython을 사용하여 그림을 업데이트하지 않습니다. -pylab [duplicate]
matplotlib, pylab, pyplot, ipython에 관한 많은 질문이 있습니다. 따라서이 질문에 아플 경우 미안합니다. 나는 사람들의 질문을보고 pyplot과 pylab에 대한 문서를보고 있었기 때문에 내가 할 수있는 한 구체적으로하려고 노력할 것이다. 그리고 나는 아직도 내가 잘못하고있는 것이 확실하지 않다. 코드 사용 :
목표 : 0.5 초마다 수치를 플롯하고 플롯 명령이 호출되면 즉시 수치를 업데이트합니다.
내 코딩 시도 (ipython -pylab에서 실행) 다음과 같습니다.
import time
ion()
x=linspace(-1,1,51)
plot(sin(x))
for i in range(10):
plot([sin(i+j) for j in x])
#see **
print i
time.sleep(1)
print 'Done'
각 줄을 올바르게 표시하지만 for 루프를 종료 할 때까지 표시하지 않습니다. draw ()를 **로 배치하여 다시 그리기를 시도했지만 그 중 하나가 작동하지 않는 것 같습니다. 이상적으로, 전체 다시 그리기 대신 단순히 각 줄을 추가하는 것이 좋습니다. 그러나 다시 그리기가 필요하면 괜찮습니다.
추가 해결 시도 : ion () 직후 보류 (True)를 추가하려고 시도했습니다. 킥을 위해 show ()를 시도했습니다 ** 내가 뭘 하려는지 가장 가까운 대답은 실행을 막지 않고 라인을 플로팅하는 것이었지만 show ()는 아무 것도하지 않았다.
이것이 간단한 요청이라면 사과드립니다. 그리고 나는 너무나 명백한 것을 지나치게 찾고 있습니다. 그것이 가치가있어, 내 자신의 사용을 위해 파이썬으로 클래스에서 matlab에 코드를 변환하려고하는 동안이 최대 왔어. 변환하려고했던 원래의 matlab (초기화가 제거 된)은 다음과 같습니다.
for i=1:time
plot(u)
hold on
pause(.01)
for j=2:n-1
v(j)=u(j)-2*u(j-1)
end
v(1)= pi
u=v
end
어떤 도움이라 할지라도 "this_method 찾아보기"가 우수 할 것이므로 적어도이 방법을 사용하는 방법을 알아 내려고 노력할 수 있습니다. 유용 할 정보가 더 있으면 알려주십시오.
해결법
-
==============================
1.연결된 질문에 대한 두 번째 대답은 답을 제공합니다. 즉, 모든 플롯 () 이후에 call draw ()를 사용하면 즉시 나타납니다. 예 :
연결된 질문에 대한 두 번째 대답은 답을 제공합니다. 즉, 모든 플롯 () 이후에 call draw ()를 사용하면 즉시 나타납니다. 예 :
import time ion() x = linspace(-1,1,51) plot(sin(x)) for i in range(10): plot([sin(i+j) for j in x]) # make it appear immediately draw() time.sleep(1)
그래도 작동하지 않으면 ...이 페이지에서 할 일을 시도해보십시오. http://www.scipy.org/Cookbook/Matplotlib/Animations
import time ion() tstart = time.time() # for profiling x = arange(0,2*pi,0.01) # x-array line, = plot(x,sin(x)) for i in arange(1,200): line.set_ydata(sin(x+i/10.0)) # update the data draw() # redraw the canvas print 'FPS:' , 200/(time.time()-tstart)
이 페이지에서는 line.set_ydata () 함수가 중요한 부분이라고 설명합니다.
-
==============================
2.
from pylab import * import time ion() tstart = time.time() # for profiling x = arange(0,2*pi,0.01) # x-array line, = plot(x,sin(x)) for i in arange(1,200): line.set_ydata(sin(x+i/10.0)) # update the data draw() # redraw the canvas pause(0.01) print 'FPS:' , 200/(time.time()-tstart) ioff() show()
위의 것은 나를 위해 잘 작동했다. 필자는 win7 OS에서 pythonxy2.7.3의 스파이더 편집기에서 실행했습니다. draw () 다음에 ioff () 및 show () 다음에 나오는 pause () 문에 주목하십시오.
-
==============================
3.내 Mac에서 실행 ipython와 정확히 동일한 문제가있었습니다. (맥북 프로 스노우 레오파드에서 Python 2.7 32bit를 배포하는 Enthought).
내 Mac에서 실행 ipython와 정확히 동일한 문제가있었습니다. (맥북 프로 스노우 레오파드에서 Python 2.7 32bit를 배포하는 Enthought).
직장 동료에게서 조언을 얻었습니다. 다음 인수를 사용하여 터미널에서 ipython을 실행합니다.
"ipython -wthread -pylab"
이것은 나를 위해 작동합니다. 위의 "Daniel G"의 파이썬 코드는 문제없이 실행되지만 이전에는 플롯을 업데이트하지 않았습니다.
ipython 문서에 따르면 : "[-gthread, -qthread, -q4thread, -wthread, -pylab : ...] 이들은 GTK, Qt (버전 3 및 4) 및 WXPython 툴킷과 matplotlib에 대한 스레딩 지원을 제공합니다 도서관." 왜 그것이 중요한지 모르겠지만 작동합니다.
희망이 도움이된다. 실험실의
-
==============================
4.비슷한 질문에 내가 게시 한 답변을 참조하십시오. GTKAgg 백엔드 만 사용하여 문제없이 애니메이션을 생성 할 수있었습니다. 이렇게하려면이 줄을 스크립트에 추가해야합니다 (필라랍을 가져 오기 전에 생각합니다).
비슷한 질문에 내가 게시 한 답변을 참조하십시오. GTKAgg 백엔드 만 사용하여 문제없이 애니메이션을 생성 할 수있었습니다. 이렇게하려면이 줄을 스크립트에 추가해야합니다 (필라랍을 가져 오기 전에 생각합니다).
matplotlib.use('GTkAgg')
또한 PyGTK를 설치하십시오.
from https://stackoverflow.com/questions/2604119/matplotlib-pyplot-pylab-not-updating-figure-while-isinteractive-using-ipython by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] SSL3_GET_SERVER_CERTIFICATE 인증서 확인이 (*) * .google.com을 요청할 때 Python에서 실패했습니다. (0) | 2018.11.08 |
---|---|
[PYTHON] 반복적 인 수식으로 순수 Python 프라임 시브 개선하기 (0) | 2018.11.08 |
[PYTHON] 유닛 테스트로 인해 sys.exit ()가 발생했습니다. (0) | 2018.11.08 |
[PYTHON] 클래스의 모든 메서드를 래핑하는 방법? (0) | 2018.11.08 |
[PYTHON] python urllib2를 사용하여 로그인 용 json 데이터를 보내는 방법 (0) | 2018.11.08 |