Trong các câu trả lời về cách cập nhật động một âm mưu trong một vòng lặp trong sổ ghi chép ipython (trong một ô) , một ví dụ được đưa ra về cách cập nhật động một âm mưu bên trong sổ ghi chép Jupyter trong vòng lặp Python. Tuy nhiên, điều này hoạt động bằng cách phá hủy và tạo lại cốt truyện trên mỗi lần lặp lại và một nhận xét trong một trong các chuỗi lưu ý rằng tình huống này có thể được cải thiện bằng cách sử dụng %matplotlib nbagg
phép thuật mới, cung cấp một nhân vật tương tác được nhúng trong sổ ghi chép, thay vì hơn một hình ảnh tĩnh.
Tuy nhiên, nbagg
tính năng mới tuyệt vời này dường như hoàn toàn không có tài liệu theo như tôi có thể nói và tôi không thể tìm thấy ví dụ về cách sử dụng nó để cập nhật động một cốt truyện. Vì vậy, câu hỏi của tôi là, làm thế nào để cập nhật một cách hiệu quả một âm mưu hiện có trong sổ ghi chép Jupyter / Python, bằng cách sử dụng phụ trợ nbagg? Vì cập nhật động các lô trong matplotlib nói chung là một vấn đề phức tạp, nên một ví dụ làm việc đơn giản sẽ là một trợ giúp to lớn. Một con trỏ đến bất kỳ tài liệu nào về chủ đề này cũng sẽ cực kỳ hữu ích.
Để rõ ràng những gì tôi đang yêu cầu: những gì tôi muốn làm là chạy một số mã mô phỏng trong một vài lần lặp, sau đó vẽ một biểu đồ về trạng thái hiện tại của nó, sau đó chạy nó thêm một vài lần lặp, sau đó cập nhật biểu đồ để phản ánh trạng thái hiện tại, v.v. Vì vậy, ý tưởng là vẽ một cốt truyện và sau đó, không có bất kỳ sự tương tác nào từ người dùng, hãy cập nhật dữ liệu trong cốt truyện mà không phá hủy và tạo lại toàn bộ.
Đây là một số mã được sửa đổi một chút từ câu trả lời cho câu hỏi được liên kết ở trên, đạt được điều này bằng cách vẽ lại toàn bộ hình mỗi lần. Tôi muốn đạt được kết quả tương tự, nhưng sử dụng hiệu quả hơn 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:
vòng lặp for, khi vòng lặp kết thúc, tôi sẽ nhận được hai hình ảnh tĩnh của âm mưu cuối cùng, thay vì một hình ảnh nbagg tương tác. Bất kỳ ý tưởng tại sao đó là?