python画图|曲线动态输出基础教程

news2024/10/8 10:36:20

在前述学习过程中,已经掌握基本的曲线图像画法,并尝试探索过3D动画基础教程。

相关文章可以通过下述链接直达:

python画三角函数图|小白入门级教程_正余弦函数画图python-CSDN博客

python动画教程|Animations using Matplotlib-官网教程程序解读_如何用python制作微动画-CSDN博客

在此基础上,我们尝试对曲线进行动态输出,效果如下:

cfed9ef9a8ee4ab987c5c944fe09aa3e.gif

图1

【1】官网教程

打开下述链接,直达官网教程:

Animated line plot — Matplotlib 3.9.2 documentation

教程简洁高效,为此进行了注解。

【2】代码解读

首先引入关键模块numpy和matplotlib:

import matplotlib.pyplot as plt #引入画图模块
import numpy as np #引入计算模块

import matplotlib.animation as animation #引入动画制作模块

然后定义画图和变量:

fig, ax = plt.subplots() #定义画图

x = np.arange(0, 2*np.pi, 0.01) #定义自变量
line, = ax.plot(x, np.sin(x)) #定义因变量

之后定义一个函数,用于动态输出Y轴数值:

def animate(i): #自定义函数
    line.set_ydata(np.sin(x + i / 50))  # update the data. 更新Y轴数据,实现动态输出
    return line,

然后调用动画模块制作动画:

ani = animation.FuncAnimation( #绘制动画
    fig, animate, interval=20, blit=True, save_count=50)

最后直接输出图形:

plt.show() #输出图形

【3】代码改写

实际上,上述代码输出的结果不能直接保存。但程序上自带了一些注释:

# To save the animation, use e.g.
#
# ani.save("movie.mp4")
#
# or
#
# writer = animation.FFMpegWriter(
#     fps=15, metadata=dict(artist='Me'), bitrate=1800)
# ani.save("movie.mp4", writer=writer)

为此我们尝试直接新增一行代码:

ani.save("movie.mp4")

实际结果却是报错:

e2e4ab2c3d4a4a5c9505b9a8756f9457.png

图2

经过尝试,改为下述代码:

ani.save('animations.gif')

可以发现输出成功,没有报错。

【4】代码优化

为了优化表达效果,增加输出曲线,定义line1:

x = np.arange(0, 2*np.pi, 0.01) #定义自变量
line, = ax.plot(x, np.sin(x)) #定义因变量
line1, = ax.plot(x, np.cos(x)) #定义因变量

然后自定义函数跟随更新:

def animate(i): #自定义函数
    line.set_ydata(np.sin(x + i / 50))  # update the data. 更新Y轴数据,实现动态输出
    line1.set_ydata(np.cos(x + i / 50))  # update the data. 更新Y轴数据,实现动态输出
    return line,line1

输出结果更新为:

35ae251dfbb5479f91cf2dc6c162e2f1.gif

图3

此时的完整代码为:

import matplotlib.pyplot as plt #引入画图模块
import numpy as np #引入计算模块

import matplotlib.animation as animation #引入动画制作模块

fig, ax = plt.subplots() #定义画图

x = np.arange(0, 2*np.pi, 0.01) #定义自变量
line, = ax.plot(x, np.sin(x)) #定义因变量
line1, = ax.plot(x, np.cos(x)) #定义因变量


def animate(i): #自定义函数
    line.set_ydata(np.sin(x + i / 50))  # update the data. 更新Y轴数据,实现动态输出
    line1.set_ydata(np.cos(x + i / 50))  # update the data. 更新Y轴数据,实现动态输出
    return line,line1


ani = animation.FuncAnimation( #绘制动画
    fig, animate, interval=20, blit=True, save_count=50)
#ani.save('animation.MP4', writer='imagemagick') #保存动画
ani.save('animations.gif') #保存动画
# To save the animation, use e.g.
#
# ani.save("movie.mp4")
#
# or
#
# writer = animation.FFMpegWriter(
#     fps=15, metadata=dict(artist='Me'), bitrate=1800)
# ani.save("movie.mp4", writer=writer)
#writer = animation.FFMpegWriter(
     #fps=15, metadata=dict(artist='Me'), bitrate=1800)
#ani.save("movie.mp4", writer=writer)


plt.show() #输出图形

【5】总结

学习了使用python实线动画曲线输出的技巧,并且掌握了gif动画保存技巧和多条曲线同时输出技巧。

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Hallo部署指南

一、介绍 Hallo是由复旦大学、百度公司、苏黎世联邦理工学院和南京大学的研究人员共同提出的一个AI对口型肖像图像动画技术,可基于语音音频输入来驱动生成逼真且动态的肖像图像视频。 该框架采用了基于扩散的生成模型和分层音频驱动视觉合成模块,提高了…

Linux实践|设置静态 IP 地址

引言 如果您是 Linux 系统管理员,那么您将需要在系统上配置网络。与可以使用动态 IP 地址的台式机不同,在服务器基础设施上,您需要设置静态 IP 地址(至少在大多数情况下)。 本文[1]旨在向您展示如何在最常用的 Linux 发…

TBD62783AFG的强大性能:高性能应用的可靠解决方案

在当今竞争激烈的电子市场中,工程师们始终在寻找能够提供可靠性、效率和多功能性的组件,尤其是在处理复杂、高性能系统时。东芝的TBD62783AFG 8通道源型DMOS晶体管阵列就是这样一个元件。凭借其独特的功能组合,使其成为从小型电机到感性设备的…

SpringCloud学习记录|day3

学习材料 2024最新SpringCloud微服务开发与实战,java黑马商城项目微服务实战开发(涵盖MybatisPlus、Docker、MQ、ES、Redis高级等) 微服务 1.单体架构 2.JMeter 这其实在redis还是什么教程里面用过,不过忘记得差不多了。 复习…

【重学 MySQL】六十、空间类型

【重学 MySQL】六十、空间类型 空间数据类型的分类空间数据类型的属性空间数据的表示方式空间数据的操作应用场景 在MySQL中,空间类型(Spatial Types)主要用于支持地理特征的生成、存储和分析。这些地理特征可以表示世界上具有位置的任何东西…

全是细节|大模型SFT的100个关键点

这篇文章介绍一下大模型的 sft 如何去做。我会默认读者们都知道 sft 是做什么的以及如何去做一些简单的 sft 微调工作,我主要是分享一些经验技巧和 debug 的分析思路。 背景篇 这里先普及一些 sft 涉及到的基础概念,方便新人同学理解后续内容&#xff0…

从0开始linux(6)——gcc

欢迎来到博主的专栏:从0开始linux 博主ID:代码小豪、 文章目录 gccgcc的文件风格预处理编译汇编链接 gcc gcc是linux系统下常用的C语言编译器,随着后续的扩展,gcc支持了c,并推出了g编译器,现在的gcc可以支…

C++(异常)

目录 C语言传统的处理错误的方式 传统的错误处理机制 C异常概念 异常的使用 异常的抛出和捕获 异常的抛出和匹配原则 在函数调用链中异常栈展开匹配原则 异常的重新抛出 异常安全 异常规范 自定义异常体系 C标准库的异常体系 异常的优缺点 C异常的优点 C异常的缺…

基于Python的美术馆预约系统【附源码】

效果如下: 系统首页界面 系统注册页面 美术馆详细页面 公告信息详细页面 后台登录界面 管理员主界面 美术馆管理界面 预约参观管理界面 研究背景 随着文化娱乐活动的日益丰富,美术馆作为展示艺术作品、传播文化的重要场所,其管理和服务模式…

大语言模型入门(四)——检索增强生成(RAG)

一、什么是检索增强生成 检索增强生成(Retrieval-Augmented Generation,RAG)由Facebook AI Research(FAIR)团队于2020年首次提出,这是一种结合了信息检索技术与语言生成模型的人工智能技术。它通过从外部知…

局域网内探测在线好友是如何做到的?

一、前言 随着局域网(LAN)应用的广泛使用,网络通信已经成为软件设计中不可或缺的一部分。局域网聊天软件作为一种常见的网络应用,可以实现多个用户之间的实时通信,广泛应用于企业内部沟通和小型网络环境中。本项目设计…

‌视频尺寸修改与批量剪辑技巧

在当今这个数字化时代,视频内容已成为人们获取信息、娱乐和社交的重要方式。然而,面对海量的视频素材,如何高效地管理和编辑它们成为了一个挑战。 1打开视频剪辑高手软件,切换功能到“批量剪辑视频” 2把需要剪辑的视频导入到表格…

希尔排序和直接插入排序

因为排序这些比较复杂点我就分几期给大家来讲~~~ 直接插入排序 直接插入排序是一种简单的排序算法,主要用于对少量数据进行排序。其基本思想是将待排序的元素逐个插入到已经排好序的部分中,从而形成一个有序序列。 具体步骤如下: 初始化&…

基于32单片机的博物馆安全监控系统设计

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 检测 分别是温湿度 光照 PM2.5、烟雾、红外,然后用OLED屏幕显示, 红外超过阈值则蜂鸣器报警,这是防盗报警;温度或烟雾超过阈值,则蜂鸣器…

【目标检测】木制地板缺陷破损数据集338张6类VOC+YOLO格式

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):3383 标注数量(xml文件个数):3383 标注数量(txt文件个数):3383 标注…

fiddler抓包21_(性能测试)耗时分析

课程大纲 使用场景 1. 查看请求耗时。 2. (更多)前端性能分析、优化。 1. 查看单个请求耗时 耗时详情:选择请求 - 右侧标签菜单选择Statistics“请求统计”。 传输时间线:选择请求 - 右侧选择“TimeLine”。 2. 前端性能分析&a…

MYSQL 常见锁机制详解,常见锁问题排查及分析

1,锁分类 锁冲突是影响数据库性能的重要指标,本章节介绍MYSQL常见锁,及各种说的常用示例,mysql锁的分类如下: 从操作类型分类:读锁、写锁; 从操作粒度分类:表锁、页锁、行锁&#x…

【文献阅读】Transfer Learning For Text Classification Via Model Risk Analysis

前言:本文是以文本分类的迁移学习任务为例,对风险分析模型的整体框架流程做梳理。 目录 1. LearnRisk1.1 motivatio1.2 overall 2. LearnRisk-TC2.1 构造风险特征2.1.1 risk metric2.1.2 risk feature 2.2 构建风险模型2.3 训练风险模型2.4 微调base mod…

线性代数入门

线性代数入门 线性代数(Linear Algebra)是数学的重要分支之一,广泛应用于工程、计算机科学、物理学、经济学等领域。它主要研究向量、矩阵及其在空间中的变换。对于程序员来说,掌握线性代数的基础知识能够帮助更好地理解数据处理…

边缘人工智能(Edge Intelligence)

边缘人工智能(Edge AI)是指在边缘设备上直接运行人工智能(AI)和机器学习(ML)算法的技术。机器学习是一个广泛的领域,近年来取得了巨大的进步。它所基于的原则是,计算机可以通过从数据…