Python实现动态绘图的示例详解 环球看点
目录
示例FuncAnimation三维情况示例
matplotlib
中的animation
提供了动态绘图功能,下面列举一个最简单的动态绘制三角函数的例子,来初步演示一下。
(相关资料图)
import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation fig, ax = plt.subplots(figsize=(5,3)) line, = ax.plot([], [], lw=1) ax.grid() def init(): ax.set_ylim(-1, 1) ax.set_xlim(0, 10) line.set_data([],[]) plt.tight_layout() return line, def animate(N): x = np.arange(N)/10 y = np.sin(x) line.set_data(x, y) return line, ani = animation.FuncAnimation(fig, animate, range(100), init_func=init, interval=40) ani.save("ani_test_0.gif") plt.show()
效果如下
其中,fig, ax
为绘图窗口和坐标轴,这是在任何绘图操作中都涉及到的元素,但在本例中的动态绘图操作中,ax
是以一种"全局变量"的形式存在的,将在后米娜的init
和animate
函数中被直接调用。
line
即为绘制在ax
之上的曲线,由于ax.plot
默认返回一个曲线列表,通过line,=
这样的方法,可以提取出曲线列表中的第0条曲线,其结果等价于
line = ax.plot([], [], lw=1)[0]
接下来init
函数用于绘图曲线的初始化,animate
用于调整绘图函数的动态变化,其输入N
暂时可以简单地理解为第N
张图像的曲线。
接下来,就是动态绘图的核心对象FuncAnimation
。
FuncAnimation
FuncAnimation
是一个类,其构造函数为
FuncAnimation(fig, func, frames=None, init_func=None, fargs=None, save_count=None, *, cache_frame_data=True, **kwargs)
前面的4个参数在示例程序中已经用到,fig
为绘图窗口;func
为图像更新函数;frames
为绘图帧号;init_func
为图像的初始化函数。
其绘图逻辑写成伪代码类似于
for n in frames: if n>0: draw(func(n)) else: draw(init(n))
如果frames
是一个整数,则在调用时会自动转为range(frames)
。
而用于绘图的主要对象,就是坐标轴ax
,故而在示例中的animate
以及init
函数的返回对象是line,
,当然也可以写成return [line]
。
FuncAnimation
中的其他参数含义如下:
fargs
为绘图函数func
的其他输入参数save_count
缓存帧数interval
帧延时,默认200毫秒,帧率25fps对应40毫秒。repeat_delay
重复延时,单位是微秒repeat
为False
时,动画将只演示一遍。
三维情况
三维情况的动图绘制函数,机理与二维是相同的,下面引用官方画廊中的示例,来演示一下三维动图的绘制流程,首先生成一组随机行走的曲线
np.random.seed(19680801) # 随机数种子,便于复现 def random_walk(N, L=0.05): st = np.random.random(3) steps = np.random.uniform(-L, L, size=(N, 3)) walk = st + np.cumsum(steps, axis=0) return walk walks = [random_walk(30) for index in range(40)]
random_walk
可生成一条随机行走的三维曲线,walks
通过调用这个函数,共生成了40条曲线,下面就是对这40条曲线的调用
def animate(num, walks, lines): for line, walk in zip(lines, walks): line.set_data(walk[:num, :2].T) line.set_3d_properties(walk[:num, 2]) return lines fig = plt.figure(figsize=(5,4)) ax = fig.add_subplot(projection="3d") lines = [ax.plot([], [], [], lw=1)[0] for _ in walks] ax.set(xlim3d=(0, 1), xlabel="X") ax.set(ylim3d=(0, 1), ylabel="Y") ax.set(zlim3d=(0, 1), zlabel="Z") ani = animation.FuncAnimation( fig, animate, 30, fargs=(walks, lines), interval=100) plt.show()
效果如下
到此这篇关于Python实现动态绘图的示例详解的文章就介绍到这了,更多相关Python动态绘图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
标签:
精彩推送
乘联会:预估10月新能源乘用车厂商批发销量环比增长1% 天天微资讯
11月3日,乘联会发布10月新能源乘用车市场预判。考虑到主力企业中的个别企业10月减量因素与增量因素的平衡
新闻快讯
X 关闭
X 关闭
新闻快讯
- Python实现动态绘图的示例详解 环球看点
- 环球新动态:归途列车中文版_归途列车
- 绘本阅读促进孩子快乐成长|每日观点
- 预计二季度电力消费增速明显回升
- 研究为慢性背痛患者带来新希望
- 多地迎最强降雨 应对如何以早制早?来听专家分析_环球快消息
- 福田时代汽车600万辆达产&品牌新势能焕新发布
- 孕妇为什么不能吃芋头_当前信息
- 切尔西球迷赛后兴高采烈,高喊:我们保级了 全球信息
- 12315投诉拼多多选哪个公司(12315投诉拼多多商家怎么赔偿)-天天通讯
- Microsoft Teams引入新的大型虚拟背景集合|全球新消息
- 电影《白塔之光》抱走“天坛奖”5项大奖 “四川造”影片为何屡获肯定?
- blackice黑冰品牌介绍_黑冰睡袋
- 广西区图书馆考试什么_广西区图书馆
- 书法作品简介怎么写_书法作品简介 世界新消息
- 天天最资讯丨ChemoID平台预测的治疗可延长胶质母细胞瘤患者的生存期
- 泰国政府:合众汽车将在泰生产电动汽车,面向东南亚市场销售
- 国家中医药管理局:提供中医养生保健服务的机构及其人员不得从事诊疗活动
- 全球快报:英国伦敦一地铁火警被触发 乘客砸窗逃生
- 【聚看点】郑州市医疗保障局中牟分局:召开廉政教育活动动员部署会
- 小姐姐“熬”过五一假期 火速领取体彩500万大奖
- 全球观速讯丨祁连山国家公园青海片区迎大批迁徙鸟类
- 时讯:香港第六届立法会选举结果(香港特别行政区第七届立法会选举)
- 上海市医疗保险事业管理中心招聘辅助人员的公告
- 环球通讯!能源资源利用效率提升 绿色工业园区平均固废处置利用率超95%
- 涉案390余万元!男子冒充街道采购人员骗取商户高档烟酒获刑 焦点速看
- 塞尔达王国之泪第三座神庙通过方法介绍-今日聚焦
- 华凯易佰:5月5日召开业绩说明会,投资者参与
- 快看点丨特斯拉又来了!全新Model S及全新Model X全系车型再次涨价19000元
- 比亚迪海鸥是否值得购买? 视讯
- 抖音视频特效都是怎么做到的_抖音视频特效怎么做的
- 孟凡华-全球快报
- 得到大学的48个思维模型【建议收藏】
- 一季度体外诊断板块业绩滑坡,九安医疗、达安基因归母净利润下滑超90%_全球热推荐
- 天天热讯:梅西为缺席训练道歉:向我的队友和俱乐部道歉 等待俱乐部的处理
- 今日热闻!第三届中国—中东欧国家博览会将举行 促进高水平对外开放
- 你强任你强清风拂山岗全部(你强任你强清风拂山岗) 世界百事通
- 防晒指数多少最好_来了解一下 全球快看点
- 集中度小于10选股公式_集中度
- 全球快报:(港澳台)香港特区政府欢迎国际货币基金组织肯定香港经济增长和金融稳定
- 春雪食品:多位股东拟合计减持不超4.81%公司股份_实时焦点
- 环球新资讯:红蜻蜓主业萎靡净利润连降五年 亏损后仍大手笔现金分红
- 月利息和年利息怎么计算_月利息和年利息换算
- 今日热文:联合国粮农组织:全球食品价格指数4月出现反弹
- 时隔33年,沪剧经典《抢亲奇缘》焕新回归
- 每日关注!河道清淤,保汛期安全
- 我国完成全球首例介入式脑机接口非人灵长类动物试验-当前关注
- 差异化破局,森马用这股「冷空气」率先迎接夏天_天天报道
- 学习服务两手抓 思想行动双进取 全球热文
- 当前视讯!祁门县平里镇:党建引领聚人心 “信用”赋能促振兴