환경 : Python 2.7, matplotlib 1.3, IPython 노트북 1.1, linux, chrome. 코드는 하나의 단일 입력 셀에 있습니다.--pylab=inline
IPython 노트북과 팬더를 사용하여 스트림을 소비하고 5 초마다 플롯을 동적으로 업데이트하고 싶습니다.
print 문을 사용하여 데이터를 텍스트 형식으로 인쇄하면 완벽하게 작동합니다. 출력 셀은 데이터를 계속 인쇄하고 새 행을 추가합니다. 그러나 데이터를 플롯 한 다음 루프에서 업데이트하려고하면 플롯이 출력 셀에 표시되지 않습니다. 그러나 루프를 제거하면 한 번만 플로팅하십시오. 잘 작동합니다.
그런 다음 몇 가지 간단한 테스트를 수행했습니다.
i = pd.date_range('2013-1-1',periods=100,freq='s')
while True:
plot(pd.Series(data=np.random.randn(100), index=i))
#pd.Series(data=np.random.randn(100), index=i).plot() also tried this one
time.sleep(5)
프로세스를 수동으로 중단 할 때까지 (ctrl + m + i) 출력에 아무것도 표시되지 않습니다. 그리고 내가 중단하면 플롯이 여러 개의 겹친 선으로 올바르게 표시됩니다. 그러나 내가 정말로 원하는 것은 5 초마다 표시되고 업데이트되는 플롯입니다 (또는 plot()
위에서 언급 한 print 문 출력과 마찬가지로 함수가 호출 될 때마다 잘 작동 함). 셀이 완전히 완료된 후에 만 최종 차트를 보여주는 것은 내가 원하는 것이 아닙니다.
나는 각각의 뒤에 draw () 함수를 명시 적으로 추가하려고 시도했다 plot()
. 그들 중 어느 것도 작동하지 않는다. IPython 노트북의 한 셀 내에서 for / while 루프를 통해 플롯을 동적으로 업데이트하는 방법이 궁금합니다.