簡體   English   中英

在Jupyter Notebook外顯示動畫

[英]Display animation outside of jupyter notebook

我想使用Jupyter筆記本來托管演示文稿的代碼,但我不想將動畫嵌入到筆記本中。 (因為嵌入視頻非常耗時。)我想運行單元格並彈出一個屏幕,就像在終端中運行代碼一樣。

from matplotlib.animation import FuncAnimation 
from matplotlib.pyplot import plot, show, subplots, title  # annotate
from IPython.display import HTML

anim = FuncAnimation(fig, update, frames=numlin, interval=100, fargs=( 
                     d, g, lr_D, lr_G, hasFake, speed, show_sample),
                     init_func=init, blit=True, repeat=0)           
HTML(anim.to_html5_video())

為什么要使用筆記本? 使用筆記本電腦的主要原因是我有許多用於實驗的不同設置。 我想使用不同的單元格來代表不同的配置,如果人們想查看特定配置的結果,則可以立即運行它。

時差 HTML函數需要一分鍾以上的時間來生成我需要的視頻。 在終端中時,動畫將開始。 我想在會議期間快速制作原型,而聽眾要求顯示不同初始條件下的結果。

筆記本計算機還有意外行為 筆記本中的視頻與終端中彈出的視頻不同。 筆記本中的視頻在繪制時不會刪除現有的幀,從而使動畫看起來很凌亂,無法跟蹤其軌跡。

筆記本輸出中的動畫

終端輸出中的動畫

這種繪畫行為是我不想使用筆記本顯示動畫的另一個原因。

筆記本需要顯示其他圖嗎? 我希望如此,但這不是必需的。 如果需要,我可以打開另一個筆記本僅用於繪圖。

如果我不好解釋,請告訴我。

筆記本內的動畫

閱讀問題,我想知道您是否知道%matplotlib notebook后端。 雖然它將在筆記本中顯示動畫,但我認為它可以滿足所有描述的需求。

%matplotlib notebook
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation 
import numpy as np

a = np.random.rand(10,4)
fig, ax =plt.subplots()
ax.axis([0,1,0,1])
points1, = plt.plot([],[], ls="", marker="d", color="indigo")
points2, = plt.plot([],[], ls="", marker="o", color="crimson")

def update(i):
    points1.set_data(a[i:i+2,0],a[i:i+2,1])
    points2.set_data(a[i:i+2,2],a[i:i+2,3])
    return points1, points2

anim = FuncAnimation(fig, update, frames=len(a)-1, repeat=True)

請注意,使用這種動畫(其中用set_data更新數據)無論是保存到視頻還是在屏幕上顯示都相同。 因此,如果沒有時間替換視頻,則可以按照最初顯示的方式使用它,刪除%matplotlib notebook並添加

from IPython.display import HTML
HTML(anim.to_html5_video())

如果使用matplotlib 2.1,您還可以選擇JavaScript動畫,

from IPython.display import HTML
HTML(ani.to_jshtml())

新窗口中的動畫

如果要顯示一個窗口,則既不應使用%matplotlib inline也不應該使用%matplotlib notebook ,而應將上面代碼中的第一行替換為

%matplotlib tk

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM