【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()

效果如图:
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/455627.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Gut Microbes | 新生儿微生物组研究的方法学挑战

摘要 新生儿出生后,肠道菌群的定植对新生儿的健康发育起着至关重要的作用,并影响其日后的健康和疾病。了解新生儿肠道菌群的发育以及其与新生儿宿主的相互作用是一个重要的研究领域。然而,该领域的研究必须解决影响研究方法设计和实施的一系…

【Java系列】OOM 时,JVM 堆栈信息保存和分析

一、前言 在日常开发中,即使代码写得再谨慎,免不了还是会发生各种意外的事件,比如服务器内存突然飙高,又或者发生内存溢出(OOM)。当发生这种情况时,我们怎么去排查,怎么去分析原因呢? 一般遇到…

展厅设计中灯光的要点都是什么

1、白炽灯 白炽灯也就是普通普通白炽灯泡白炽灯有显色性强,开灯即亮,明暗可调,结构简单,造价低等优点,但缺点是使用寿命短,光效较低展厅设计中常使用于走道和其他部位。 2、卤钨灯 充气白炽灯填充气体中含有…

代码随想录day20(1)二叉树:二叉树的最小深度(leetcode111)

题目要求:求出一棵二叉树的最小深度 思路:最小深度指的是从根节点到最近叶子节点的最短路径上的节点数量(左右孩子必须都为空!)。思路类似于求二叉树的最大深度,仍然采用后序遍历,增加判断只有…

Docker启动安装nacos(踩过坑版)

1、Docker 拉取镜像 docker pull nacos/nacos-server:v2.1.0 2、创建宿主机挂载目录 mkdir -p /mydata/nacos/logs/ mkdir -p /mydata/nacos/conf/ 3、启动nacos并复制文件到宿主机,关闭容器 启动容器 docker run -p 8848:8848 --name nacos -d nacos/nacos-se…

通过Maven创建Web工程

通过Maven创建Web工程 方式一方式二 方式一 1.先创建一个Maven工程 2.把该Maven模块的pom文件里添加一个war 3.选中该Maven模块 点击项目架构 4.手动添加一个Web架构 方式二 1.也是new一个模块 但是直接配置好Web 2.这里就是我IDEA对Maven的设置 3.第一次创建 可能…

【C++】STL--String

这一节主要总结string类的常见接口,以及完成了string类的模拟实现。 目录 标准库的String类 string类常见接口 string类对象的常见构造 string析构函数:~string string类对象的容量操作 string类对象的访问及遍历操作 string类对象的修改操作 s…

jvm题库详解

1、JVM内存模型 注意:这个是基于jdk1.8之前的虚拟机,在jdk1.8后 已经没有方法区,一并合并到堆中的元空间了 JVM内存区域总共分为两种类型 线程私有区域:程序计数器、本地方法栈和虚拟机栈 线程共享区域:堆&#xff08…

让若依生成的service、mapper继承mybatisPlus的基类

前言:若依继承mybatisPlus后,生成代码都要手动去service、serviceImpl、mapper文件去继承mybatisplus的基类,繁琐死了。这里通过修改若依生成模版从而达到生成文件后直接使用mybatisPlus的方法。 一、首先找到若依生成模版文件位置&#xff…

顶顶通呼叫中心中间件-群集模式配置

文章目录 群集模式介绍联系我们配置流程群集模式下呼叫线路配置 群集模式介绍 在大规模的外呼或者呼入系统,比如整个系统需要1万并发,单机最高也就3000-5000并发,这时候就需要多机群集了。顶顶通呼叫中心中间件使用的是 redis 数据库&#x…

你选的Six Sigma咨询公司靠谱吗?保姆级避坑指南

近年来,企业为了追求更高的运营效率和产品质量,纷纷寻求Six Sigma这样的先进管理方法。然而,市场上的咨询公司琳琅满目,如何选择一家真正靠谱、能带来实际效益的咨询公司呢? 一、了解公司背景和实力 在选择Six Sigma咨…

msdn我告诉你itellyou做一个安静的工具站,各种windows镜像下载,iso体积都是很小的那种

官网地址:MSDN, 我告诉你 - 做一个安静的工具站 可以看到里面集成了各种操作系统,可以下载使用。 或者在他的新站点:登录 里面有最新的windows11系统可以下载,但是需要登陆之后才可以,随便第三方账号登陆即可&…

【Devin AI】全球首位AI程序员登场,程序员该如何保住饭碗?编程新纪元的革命已到来!

程序员们,警惕!我们的饭碗要被砸了! 一觉醒来,全球首位AI程序员 Devin 上线了!直接引爆整个科技圈。 Devin被介绍为世界首个完全自主的AI软件工程师。只需一句指令,它可端到端地构建和部署整个开发项目。 …

Ajax学习笔记(一):原生AJAX、HTTP协议、AJAX案例准备工作、发送AJAX请求、AJAX 请求状态

目录 一、原生AJAX 1.1AJAX 简介 1.2 XML 简介 1.3 AJAX的特点 二、HTTP协议 三、AJAX案例准备工作 四、发送AJAX请求 1.发送GET请求 2.发送POST请求 3.JSON响应 IE缓存问题: 五、AJAX 请求状态 一、原生AJAX 1.1AJAX 简介 AJAX 全称为 Asynchronous …

使用Nginx进行负载均衡

什么是负载均衡 Nginx是一个高性能的开源反向代理服务器,也可以用作负载均衡器。通过Nginx的负载均衡功能,可以将流量分发到多台后端服务器上,实现负载均衡,提高系统的性能、可用性和稳定性。 如下图所示: Nginx负…

shell控制多线程并发处理

一、前言 我们在用shell编程时,当用到循环语句时,如果循环的对象数量比较多,则代码一条一条处理,时间消耗会特别慢。如果此时机器资源充足,不妨学会多线程并发处理这招,帮助你提前打卡完成工作。 二、控制…

MySQL数据库自动备份(Linux操作系统)

方式一 参考:https://blog.csdn.net/qq_48157004/article/details/126683610?spm1001.2014.3001.5506 1.MySQL备份脚本 在/home/backups/下建立.sh文件,文件名称 mysql_backup.sh ,内容如下 #!/bin/bash #备份路径 BACKUP/home/backups/mysqlBackup…

酷开系统走在前列,品牌重启增长,酷开科技成为品牌商合作目标

区别于火热的移动端,手机屏作为私密屏,往往面向的是用户个体,而电视作为家庭连接的重要枢纽,不仅仅定位于公共屏,同时也面向客厅场景发挥着其大屏传播的作用,这里不仅牵扯到大屏营销,也关联着大…

奥赛满分金牌得主出品,硅谷诞生超级AI码农

又是让程序员们兴奋而焦绿🍌的一刻,昨天业界又发布了一款 AI 编程产品 Devin。号称是业界第一个 AI 软件工程师。 作者 Scott Wu 曾是国际信息奥赛 (IOI) 连续三届的金牌得主,其中还有一届是满分。 Devin 背后的公司名字叫 Cognition。中文翻…

Matlab有限元结果后处理 | 不规则云图绘制(二维/三维)|【Matlab源码+视频教程】

专栏导读 作者简介:工学博士,高级工程师,专注于工业软件算法研究本文已收录于专栏:《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现,并提供所有案例完整源码;2.单元…
最新文章