Matplotlib繪製簡單動圖
阿新 • • 發佈:2018-11-17
之前寫過一篇關於繪製雨點動圖的部落格
Python/Matplotlib實現雨點圖動畫
部落格中使用了matplotlib的animation模組,使用比較繁瑣,下面介紹一種比較簡單的辦法,使用互動式繪圖和暫停功能實現,直接看下面程式碼:
import numpy as np import matplotlib.pyplot as plt from matplotlib import font_manager # 解決中文亂碼問題 myfont = font_manager.FontProperties(fname=r"C:\Windows\Fonts\msyh.ttc" , size=14) N = 20 plt.close() # 關閉開啟的圖形視窗 def anni(): fig = plt.figure() plt.ion() # 開啟互動式繪圖interactive for i in range(N): plt.cla() # 清除原有影象 plt.xlim(-0.2,20.4) # 設定x軸座標範圍 plt.ylim(-1.2,1.2) # 設定y軸座標範圍 # 每當i增加的時候,增加自變數x的區間長度,可以理解為不斷疊加繪圖,所以每次迴圈之前都使用plt.cla()命令清除原有影象 x = np.linspace(0,i+1,1000) y = np.sin(x) plt.plot(x,y) plt.pause(0.1) # plt.ioff() #關閉互動式繪圖 plt.show() anni()
執行程式碼後就能看到動圖效果了
使用annimation模組的方法如下:
import numpy as np import matplotlib.pyplot as pl import matplotlib.animation as animation x = np.linspace(0, 10, 100) y = np.sin(x) fig, ax = plt.subplots() line, = ax.plot(x, y, color='k') def update(num, x, y, line): line.set_data(x[:num], y[:num]) line.axes.axis([0, 10, -1, 1]) return line, ani = animation.FuncAnimation(fig, update, len(x), fargs=[x, y, line], interval=25, blit=False) # ani.save('test.gif') plt.show()
參考連結
[1]https://zhuanlan.zhihu.com/p/31323002
[2]https://stackoverflow.com/questions/28074461/animating-growing-line-plot-in-python-matplotlib
[3]https://matplotlib.org/api/_as_gen/matplotlib.animation.FuncAnimation.html#matplotlib.animation.FuncAnimation