Python使用plt庫實(shí)現(xiàn)繪制動(dòng)態(tài)曲線圖并導(dǎo)出為GIF或MP4
一、繪制初始圖像
正常使用plt進(jìn)行繪圖,這里舉例一個(gè)正弦函數(shù):
二、繪制動(dòng)態(tài)圖的每一幀
思路:
- 根據(jù)橫坐標(biāo)點(diǎn)數(shù)繪制每一幀畫面
- 每次在當(dāng)前坐標(biāo)處,繪制一個(gè)點(diǎn)和垂直的線,來表示當(dāng)前點(diǎn)
- 可以在點(diǎn)上加個(gè)坐標(biāo)等樣式來增加動(dòng)態(tài)效果
實(shí)例代碼:
import numpy as np import matplotlib.pyplot as plt for i in range(len(x)): plt.figure() x = np.linspace(0, 12, 121) y = np.sin(x) # 繪制垂直橫線 plt.vlines(x=x[i], ymin=-1, ymax=1, colors='black', linestyles='dashdot') # 繪制水平橫線 plt.hlines(y=0, xmin=0, xmax=12, colors='black', linestyles='solid',linewidths=3) plt.plot(x, y) plt.scatter(x[i],y[i],color='red',s=30) plt.grid(True, linestyle='--', alpha=0.5) plt.savefig(f"./test/{i}.png") plt.show() plt.close()
效果如下:
三、利用imageio庫制作視頻或者gif
最后,把所有圖像繪制成一個(gè)動(dòng)態(tài)圖或者視頻就可以實(shí)現(xiàn)了,效果還是客觀的。
import imageio # 主要使用imageio這個(gè)庫 import os def create_gif(image_list, gif_name, duration=0.35): frames = [] for image_name in image_list: frames.append(imageio.imread(image_name)) # 轉(zhuǎn)化成gif imageio.mimsave(gif_name, frames, 'GIF', duration=duration) return def create_video(image_list): filename = 'output3.mp4' filepath = os.path.join(os.getcwd(), filename) frames = [] for image_name in image_list: frames.append(imageio.imread(image_name)) # 將圖片轉(zhuǎn)換為視頻 fps = 2 # 每秒鐘幀數(shù) with imageio.get_writer(filepath, fps=fps) as video: for image in frames: # frame = image.convert('RGB') video.append_data(image) def main(): orgin = './test' # 首先設(shè)置圖像文件路徑 files = os.listdir(orgin) image_list = [] for i in range(len(files)): file_dir = f"{i}.png" path = os.path.join(orgin, file_dir) image_list.append(path) # 創(chuàng)建gif gif_name = 'result.gif' # 設(shè)置動(dòng)態(tài)圖的名字 duration = 0.2 create_gif(image_list, gif_name, duration) # 創(chuàng)建動(dòng)態(tài)圖 # 創(chuàng)建video # create_video(image_list=image_list) if __name__ == '__main__': main()
效果如圖:
到此這篇關(guān)于Python使用plt庫實(shí)現(xiàn)繪制動(dòng)態(tài)曲線圖并導(dǎo)出為GIF或MP4的文章就介紹到這了,更多相關(guān)Python plt繪制動(dòng)態(tài)曲線圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決python3 Pycharm上連接數(shù)據(jù)庫時(shí)報(bào)錯(cuò)的問題
今天小編就為大家分享一篇解決python3 Pycharm上連接數(shù)據(jù)庫時(shí)報(bào)錯(cuò)的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12python opencv人臉識(shí)別考勤系統(tǒng)的完整源碼
這篇文章主要介紹了python opencv人臉識(shí)別考勤系統(tǒng)的完整源碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04python監(jiān)控網(wǎng)卡流量并使用graphite繪圖的示例
這篇文章主要介紹了python監(jiān)控網(wǎng)卡流量并使用graphite繪圖的示例,需要的朋友可以參考下2014-04-04Python+selenium 獲取瀏覽器窗口坐標(biāo)、句柄的方法
今天小編就為大家分享一篇Python+selenium 獲取瀏覽器窗口坐標(biāo)、句柄的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10Python 排序最長英文單詞鏈(列表中前一個(gè)單詞末字母是下一個(gè)單詞的首字母)
這篇文章主要介紹了Python 排序最長英文單詞鏈(列表中前一個(gè)單詞末字母是下一個(gè)單詞的首字母),列表中每個(gè)元素相當(dāng)于一個(gè)單詞,要實(shí)現(xiàn)列表中前一個(gè)單詞末字母是下一個(gè)單詞的首字母,并且這個(gè)鏈?zhǔn)亲铋L的。感興趣的可以了解一下2020-12-12