Python使用plt库实现绘制动态曲线图并导出为GIF或MP4

 更新时间:2024年03月13日 15:39:27   作者:小子挺不错  
这篇文章主要为大家详细介绍了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绘制动态曲线图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决python3 Pycharm上连接数据库时报错的问题

    解决python3 Pycharm上连接数据库时报错的问题

    今天小编就为大家分享一篇解决python3 Pycharm上连接数据库时报错的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • centos6.4下python3.6.1安装教程

    centos6.4下python3.6.1安装教程

    这篇文章主要为大家详细介绍了centos6.4下python3.6.1的安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • python opencv人脸识别考勤系统的完整源码

    python opencv人脸识别考勤系统的完整源码

    这篇文章主要介绍了python opencv人脸识别考勤系统的完整源码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • python每隔N秒运行指定函数的方法

    python每隔N秒运行指定函数的方法

    这篇文章主要介绍了python每隔N秒运行指定函数的方法,涉及Python的线程与时间操作技巧,非常具有实用价值,需要的朋友可以参考下
    2015-03-03
  • python监控网卡流量并使用graphite绘图的示例

    python监控网卡流量并使用graphite绘图的示例

    这篇文章主要介绍了python监控网卡流量并使用graphite绘图的示例,需要的朋友可以参考下
    2014-04-04
  • 使用Python实现跳帧截取视频帧

    使用Python实现跳帧截取视频帧

    这篇文章主要介绍了使用Python实现跳帧截取视频帧,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • Python+selenium 获取浏览器窗口坐标、句柄的方法

    Python+selenium 获取浏览器窗口坐标、句柄的方法

    今天小编就为大家分享一篇Python+selenium 获取浏览器窗口坐标、句柄的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)

    Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)

    这篇文章主要介绍了Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母),列表中每个元素相当于一个单词,要实现列表中前一个单词末字母是下一个单词的首字母,并且这个链是最长的。感兴趣的可以了解一下
    2020-12-12
  • python实现杨辉三角思路

    python实现杨辉三角思路

    本文给大家分享的是作者使用python实现杨辉三角的思路,非常的实用,有需要的小伙伴可以参考下
    2017-07-07
  • Python词法结构

    Python词法结构

    这篇文章主要介绍了Python词法结构,变量是一种存储数据的载体,也就是一个容器。计算机中的变量是实际存在的数据或者说是存储器中存储数据的一块内存空间,变量的值可以被读取和修改,这是所有计算机和控制的基础,下面详细内容,需要的朋友可以参考一下
    2021-10-10

最新评论