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

在前述学习过程中,已经掌握基本的曲线图像画法,并尝试探索过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,line1ani = 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.xdnf.cn/news/1557250.html

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

相关文章

电玩体验馆计时软件可以倒计时的软件试用版下载 佳易王ps5计时器管理系统使用教程

一、前言 【软件试用版下载可以点击本文章最下方官网卡片】 电玩体验馆计时软件可以倒计时的软件试用版下载 佳易王ps5计时器管理系统使用教程 1、软件能够记录玩家开始的时间和节数时间,从而计算出时长。 2、根据预设的收费标准,软件可以自动计算出…

各省份自然灾害损失造成的直接经济损失数据(2009-2022年)

自然灾害是自然演变过程中不可避免的现象,它们对人类社会构成了巨大的威胁。中国作为一个自然灾害频发的国家,面临着种类繁多的灾害挑战,包括气象灾害、地质灾害、海洋灾害、生物灾害和森林草原火灾等。 数据来源:《中国环境统计…

【GESP】C++一级练习BCQM3030,保留12位小数

浮点数数位保留练习,%m.nf知识点,已在BCQM3027中详细介绍。 题解详见:https://www.coderli.com/gesp-1-bcqm3030/ 【GESP】C一级练习BCQM3030,保留12位小数 | OneCoder浮点数数位保留练习,%m.nf知识点,已在…

培训机构客户管理系统的设计+ssm论文源码调试讲解

2 系统开发环境 2.1微信开发者工具 微信开发者工具现在已经被小程序开发团队开发运行,目前微信开发者工具任然在不断的完善中,在开发小程序时经常要不断的更新。可以使用微信扫码登陆开发者工具,开发者工具将使用这个微信帐号的信息进行小程…

Android车载音频系统概览

目录 1. 什么是Android车载音频系统 2. Android 声音和声音流 2.1 Android 声音 2.2 外部声音流 2.3 输出设备 章节说明:本节内容是Android车载音频系统简介。 1. 什么是Android车载音频系统 官方英文名称是:Automotive audio systems 由于汽车上无论是音频设备的数量还…

QT 实现图片查看工具

QT 实现图片查看工具 1、选择图像文件 单文件选择 QFileDialog::getOpenFileName多文件选择 QFileDialog::getOpenFileNamesQList<QString> imageNames = QFileDialog::getOpenFileNames(this,tr("打开图片"),"",tr("图片文件 (*.png *.jpg *.b…

OpenHarmony中OpenSSL从1.1.1 升级到3.0.7 时不支持MD4算法导致wpa_supplicant报错问题解决

OpenHarmony中OpenSSL从1.1.1 升级到3.0.7 时不支持MD4算法导致wpa_supplicant报错问题解决 1 问题现象 我们在测试EAP-PEAP(MSCHAPV2)功能时发现如下打印,导致认证失败 2 初步分析 openssl_digest_vector 中 调用EVP_DigestInit_ex 时如果报错 会打印"OpenSSL: EVP…

人工智能重点知识点总结整理

一、章节知识点目录 绪论知识表示方法确定性推理非经典推理计算智能机器学习完结篇二、每章重点内容 1. 绪论 定义:人工智能(AI)

厨房用品分割系统源码&数据集分享

厨房用品分割系统源码&#xff06;数据集分享 [yolov8-seg-C2f-DCNV3&#xff06;yolov8-seg-AFPN-P345等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Global Al ln…

论文阅读笔记-XLNet: Generalized Autoregressive Pretraining for Language Understanding

前言 Google发布的XLNet在问答、文本分类、自然语言理解等任务上都大幅超越BERT,XLNet提出一个框架来连接语言建模方法和预训练方法。我们所熟悉的BERT是denoising autoencoding模型,最大的亮点就是能够获取上下文相关的双向特征表示,所以相对于标准语言模型(自回归)的预…

测绘工程专业职称申报条件是什么?

关于测绘工程专业职称申报条件&#xff0c;甘建二从初级、中级、高级给大家说一下&#xff1a; 一、初级&#xff08;助理&#xff09;测绘工程工程师评审条件&#xff1a; 1、测绘类或者相近专业类毕业 2、专科毕业满3年并且从事专业技术员职务工作2年以上 3、本科毕业后&a…

Qt-QVBoxLayout布局类控件(41)

目录 描述 属性 使用 每一个widget只能有一个布局管理器 描述 使⽤ QVBoxLayout 表⽰垂直的布局管理器. V 是 vertical 的缩写. 为此Qt提供了布局管理器 属性 layoutLeftMargin左侧边距layoutRightMargin右侧边距layoutTopMargin上⽅边距layoutBottomMargin下⽅边距layo…

Linus Torvalds 要求内核开发人员编写更好的 Git 合并提交信息

昨天在宣布 Linux 6.12-rc2 内核时&#xff0c;Linus Torvalds 要求内核维护者在提交信息方面做得更好。Torvalds 尤其希望内核维护者在描述拉取请求中的变更时&#xff0c;能更好地使用积极、命令式的语气。 Linux创建者在6.12-rc2 公告中解释道&#xff1a; 总之&#xff0c…

ChatGPT Canvas:系统提示词泄漏了~

OpenAI 推出了一款叫做 Canvas 的新工具&#xff0c;用来帮助用户更好地与 ChatGPT 协作写作和编程。详细介绍可以看这篇文章&#xff1a;ChatGPT Canvas&#xff1a;交互式对话编辑器-CSDN博客​编辑 以下是 OpenAI 新功能 “Canvas” 的系统提示内容 你是 ChatGPT&#xff0…

域渗透之: 域渗透环境搭建详解基于VMware

域控环境介绍 在域架构中&#xff0c;最核心的就是域控主机&#xff0c;域控主机分为三种: 普通域控额外域控只读域控 域控环境相关知识点介绍 创建域环境首先就是要创建域控主机。域控主机创建完成以后&#xff0c;需要把所有的计算机拉入域中&#xff0c;这样就形成了域控…

棒球运动物体检测系统源码分享

棒球运动物体检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

Apple Intelligence将于10月28日发布,ChatGPT集成推迟!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;专注于分享AI全维度知识&#xff0c;包括但不限于AI科普&#xff0c;AI工…

Python GUI 编程:tkinter 初学者入门指南——单行文本框

在本文中&#xff0c;将介绍如何使用 tkinter Entry 小部件。tkinter Entry 小部件允许创建能够输入的单行文本框。 要创建 Entry 单行文本框&#xff0c;请按如下方式使用构造函数&#xff1a; textbox tk.Entry(master, **options) 通常&#xff0c;将 Entry 单行文本框输…

Allegro如何合并同名网络铜皮操作指导

Allegro如何合并同名网络铜皮操作指导 Allegro可以将同名网络的铜皮合并起来&#xff0c;如下图&#xff0c;需要把下面两块铜皮合并成一块铜皮 具体操作如下 选择Shape 选择merge shapes Find选择shapes 点击其中一块铜皮&#xff0c;会被亮起来 再点击另外一块铜皮 两块铜皮…

Python酷库之旅-第三方库Pandas(136)

目录 一、用法精讲 611、pandas.DataFrame.to_orc方法 611-1、语法 611-2、参数 611-3、功能 611-4、返回值 611-5、说明 611-6、用法 611-6-1、数据准备 611-6-2、代码示例 611-6-3、结果输出 612、pandas.DataFrame.to_dict方法 612-1、语法 612-2、参数 612-…