[英]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.