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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python Handler處理器和自定義Opener原理詳解
這篇文章主要介紹了Python Handler處理器和自定義Opener原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
Python的經(jīng)緯度與xy坐標(biāo)系相互轉(zhuǎn)換方式
這篇文章主要介紹了Python的經(jīng)緯度與xy坐標(biāo)系相互轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
python數(shù)據(jù)分析之聚類分析(cluster analysis)
聚類分析本身不是一個(gè)特定的算法,而是要解決的一般任務(wù)。它可以通過各種算法來實(shí)現(xiàn),這些算法在理解群集的構(gòu)成以及如何有效地找到它們方面存在顯著差異。這篇文章主要介紹了python數(shù)據(jù)分析之聚類分析(cluster analysis),需要的朋友可以參考下2021-11-11

