python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python plt绘制动态曲线图

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绘制动态曲线图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文