import numpy from matplotlib import pyplot from matplotlib import animation def update_points(num): point_ani.set_data(x[num],y[num]) #更新點的位置,將這里的(x[num],y[num])替換(x[0],y[0]) if num%5==0: point_ani.set_marker("*") point_ani.set_markersize(12) else: point_ani.set_marker("o") point_ani.set_markersize(8) text_pt.set_position((x[num],y[num])) #更新文本位置 text_pt.set_text("x=%.3f,y=%.3f"%(x[num],y[num])) #更新文本內容 return point_ani,text_pt, x=numpy.linspace(0,2*numpy.pi,100) y=numpy.sin(x) fig=pyplot.figure(tight_layout=True) pyplot.plot(x,y) pyplot.grid(ls="--") #給影像添加網格 text_pt = pyplot.text(4, 0.8, '', fontsize=16) point_ani,= pyplot.plot(x[0], y[0], "ro") #宣告點物件,必須有逗號,表示得到元組 #開始制作影片 ani=animation.FuncAnimation(fig,update_points,numpy.arange(0,100),interval=100,blit=True) ani.save("test2.gif", writer='pillow',fps=10) #保存動圖 pyplot.show()
#上面的代碼中,首先定義了一個update_points函式,用于更新繪制的圖中的資料點,此函式的輸入引數num代表當前影片的第幾幀,
#函式的回傳,即為我們需要更新的物件,需要特別注意的是:reuturn point_ani,這個逗號一定加上,否則影片不能正常顯示,當
#然這里面操作的點物件point_ani我們一般會提前宣告得到:point_ani, = plt.plot(x[0], y[0], "ro"),接下來就是將此函式傳
#入我們的FuncAnimation函式中,函式的引數說明可以參見官網,這里簡要說明用到的幾個引數,
#第1個引數fig:即為我們的繪圖物件.
#第2個引數update_points:更新影片的函式.
#第3個引數np.arrange(0, 100):影片幀數,這需要是一個可迭代的物件,
#interval引數:影片的時間間隔,
#blit引數:是否開啟某種影片的渲染,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/110793.html
標籤:Python
