ipython notebook (하나의 셀 내)의 루프에서 플롯을 동적으로 업데이트하는 방법에 대한 답변에서 Python 루프 내에서 Jupyter 노트북 내부의 플롯을 동적으로 업데이트하는 방법에 대한 예제가 제공됩니다. 그러나 이것은 매 반복마다 플롯을 파괴하고 다시 생성하는 방식으로 작동하며 스레드 중 하나의 주석은 %matplotlib nbagg
노트북에 포함 된 대화 형 그림을 제공하는 새로운 마법 을 사용하여이 상황을 개선 할 수 있다고 언급합니다. 정적 이미지보다.
그러나이 멋진 새 nbagg
기능은 내가 말할 수있는 한 완전히 문서화되지 않은 것처럼 보이며이를 사용하여 플롯을 동적으로 업데이트하는 방법에 대한 예를 찾을 수 없습니다. 따라서 내 질문은 nbagg 백엔드를 사용하여 Jupyter / Python 노트북의 기존 플롯을 어떻게 효율적으로 업데이트합니까? matplotlib에서 플롯을 동적으로 업데이트하는 것은 일반적으로 까다로운 문제이므로 간단한 작업 예제가 큰 도움이 될 것입니다. 주제에 대한 문서에 대한 포인터도 매우 유용합니다.
내가 원하는 것은 몇 번의 반복에 대해 시뮬레이션 코드를 실행 한 다음 현재 상태의 플롯을 그린 다음 몇 번 더 반복하여 실행 한 다음 반영하도록 플롯을 업데이트하는 것입니다. 현재 상태 등. 따라서 아이디어는 플롯을 그린 다음 사용자의 상호 작용없이 전체를 파괴하고 다시 생성하지 않고 플롯의 데이터를 업데이트하는 것입니다.
다음은 위의 링크 된 질문에 대한 답변에서 약간 수정 된 코드로, 매번 전체 그림을 다시 그려이를 달성합니다. 동일한 결과를 얻고 싶지만 nbagg
.
%matplotlib inline
import time
import pylab as pl
from IPython import display
for i in range(10):
pl.clf()
pl.plot(pl.randn(100))
display.display(pl.gcf())
display.clear_output(wait=True)
time.sleep(1.0)
while True:
를 for 루프로 변경하면 루프가 끝날 때 대화 형 nbagg가 아닌 마지막 플롯의 두 정적 이미지를 얻습니다. 그 이유를 아십니까?