Python使用plt库实现绘制动态曲线图并导出为GIF或MP4
作者:小子挺不错
这篇文章主要为大家详细介绍了Python如何使用plt库实现绘制动态曲线图并导出为GIF或MP4,文中的示例代码讲解详细,需要的可以了解一下
一、绘制初始图像
正常使用plt进行绘图,这里举例一个正弦函数:
二、绘制动态图的每一帧
思路:
- 根据横坐标点数绘制每一帧画面
- 每次在当前坐标处,绘制一个点和垂直的线,来表示当前点
- 可以在点上加个坐标等样式来增加动态效果
实例代码:
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
最后,把所有图像绘制成一个动态图或者视频就可以实现了,效果还是客观的。
import imageio # 主要使用imageio这个库 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)) # 转化成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)) # 将图片转换为视频 fps = 2 # 每秒钟帧数 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' # 首先设置图像文件路径 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) # 创建gif gif_name = 'result.gif' # 设置动态图的名字 duration = 0.2 create_gif(image_list, gif_name, duration) # 创建动态图 # 创建video # create_video(image_list=image_list) if __name__ == '__main__': main()
效果如图:
到此这篇关于Python使用plt库实现绘制动态曲线图并导出为GIF或MP4的文章就介绍到这了,更多相关Python plt绘制动态曲线图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!