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

相关文章

  • Python Handler处理器和自定义Opener原理详解

    Python Handler处理器和自定义Opener原理详解

    这篇文章主要介绍了Python Handler处理器和自定义Opener原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Python如何将大TXT文件分割成4KB小文件

    Python如何将大TXT文件分割成4KB小文件

    处理大文本文件是程序员经常遇到的挑战,特别是当我们需要把一个几百MB甚至几个GB的TXT文件分割成小块时,下面我们来聊聊如何用Python自动完成这个任务吧
    2025-04-04
  • VS2022编译安装Qt6.5源码教程

    VS2022编译安装Qt6.5源码教程

    这篇文章主要介绍了VS2022编译安装Qt6.5源码,在这里解压方式可以使用7z解压,也可以使用MinGW中的tar进行解压,本文给大家介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • scrapy框架ItemPipeline的使用

    scrapy框架ItemPipeline的使用

    本文主要介绍了scrapy框架ItemPipeline的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Python的经纬度与xy坐标系相互转换方式

    Python的经纬度与xy坐标系相互转换方式

    这篇文章主要介绍了Python的经纬度与xy坐标系相互转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • PyCharm 在Windows的有用快捷键详解

    PyCharm 在Windows的有用快捷键详解

    这篇文章主要介绍了PyCharm 在Windows的有用快捷键,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • 使用python获取(宜宾市地震信息)地震信息

    使用python获取(宜宾市地震信息)地震信息

    今天这个项目用到了Python的爬虫知识,没有用大家讨厌的正则表达式,而是用一种新的方式解析库,实现对HTML的解析和提取信息,最后又用到前面项目用过的wxpy库,实现了全部功能
    2019-06-06
  • python数据分析之聚类分析(cluster analysis)

    python数据分析之聚类分析(cluster analysis)

    聚类分析本身不是一个特定的算法,而是要解决的一般任务。它可以通过各种算法来实现,这些算法在理解群集的构成以及如何有效地找到它们方面存在显着差异。这篇文章主要介绍了python数据分析之聚类分析(cluster analysis),需要的朋友可以参考下
    2021-11-11
  • 九个Python列表生成式高频面试题汇总

    九个Python列表生成式高频面试题汇总

    本文为大家整理了九个Python列表生成式的面试题(从简单到困难排序),可以帮助大家提高列表生成式的理解水平,感兴趣的小伙伴可以学习一下
    2022-05-05
  • 如何使用PyTorch优化一个边缘检测器

    如何使用PyTorch优化一个边缘检测器

    这篇文章主要给大家介绍了关于如何使用PyTorch优化一个边缘检测器的相关资料,文中通过代码介绍的非常详细,对大家的学习或者工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-09-09

最新评论