基于matplotlib.animation和python的流数据动态监控原型
流数据动态监控原型的内容概述
开发环境:Python3.6
代码行数:不到40行代码
代码风格:详细注解
代码特点:一定能跑起来
附加资料:带详细注释的九个animation实例
- Decay
- The Bayes update
- The double pendulum problem
- Animated histogram
- Rain simulation
- Animated 3D random walk
- Animated line plot
- Oscilloscope
- MATPLOTLIB UNCHAINED
最后的效果:
这方面的资料网上很少,以下是网上三个较为相关的博客:
《使用Matplotlib实现实时数据流可视化(animation模块)》
原文:https://blog.csdn.net/weixin_43323092/article/details/82929556
该博主只介绍了常用函数的几个参数;给了一个官网的实例,这个实例没有注解;博主自己的实现没有给出完整代码,不能跑起来。
《可视化篇:流式数据监控(python)》
原文:https://blog.csdn.net/yc_1993/article/details/54933751
该博主提供了python 2.X的实现,并提供了一些流数据监控实现的思路,并对相关的函数做了一定的介绍。该博主给了两种相关的实现(代码注释不是很清楚,代码量有点大),而且两种实现没有给相应的数据集,不能顺利的跑起来。
《Matplotlib 画动态图: animation模块的使用》
原文:https://blog.csdn.net/u013180339/article/details/77002254
该博主只是简单的搬运了官网的四个例子,没有做详细的注释和分析。
本博主提供的资料特点:
- 代码简洁且有详细注释
- 附带官网示例(带注释)
- 提供jupyter notebook使用教程,方便理解代码以及提高开发效率
- 使用Python3.6实现
- 工程一定能够运行起来,并且易于后期修改
- 学完提供的jupyter notebook使用教程、官网示例、目标代码,相关技能将得到很大的提升
流数据动态监控原型源码
from numpy import sin, cos
import numpy as np
import matplotlib.pyplot as plt
import scipy.integrate as integrate
import matplotlib.animation as animation
%matplotlib notebook#用来正常显示中文标签
plt.rcParams['font.sans-serif'] = ['SimHei']
#用来正常显示负号
plt.rcParams['axes.unicode_minus'] = Falsefig = plt.figure(figsize=(10, 4))
ax = fig.add_subplot(111, autoscale_on=False, xlim=(0, 40), ylim=(0, 40))
ax.set_aspect('auto') # 控制长宽比
# ax.grid() # 是否要格子背景
ax.axhline(30, linestyle='--', color='black')
# 设置图片标题
ax.set_title('横坐标动态更新的animation实现')
# 设置横坐标名称
ax.set_xlabel('动态变化的横轴')
line, = ax.plot([], [], 'o-', lw=2)# 由于animation必须先有指定的数据或者指定的数据大小,但是我们的数据是一个一个显示的,初期是么有数据的
# 我们又必须提前填充指定个数的数据,这里我们填充x、y刻度以外的数据,然后想办法不显示
# 我们如何不显示呢?由于这些数据本质上还是要输出的,只是不让我们看见,数据既然要输出我们就要正确的设置这些数据对应的刻度
# 既然刻度不能做出改变,我们只能在刻度标签做手脚,我们让数据中x轴标签对应的刻度小于0时,标签显示空字符串
thisx = [i for i in range(-40, 0)]
thisy = (np.zeros(40, dtype=int) - 1).tolist()def init():line.set_data([], [])return linedef animate(*args):# 这种操作之前一定要确保len(thisy) = len(thisx)del thisx[0]del thisy[0]thisx.append(max(thisx) + 1)thisy.append(np.random.randint(0, 40, 1))# 设置x轴的范围ax.set_xlim(min(thisx), max(thisx))# 更新刻度,刻度只要早x轴的范围内就可以ax.set_xticks([i for i in range(min(thisx), max(thisx) + 1, 1)])# 设置刻度标签ax.set_xticklabels([i if i >= 0 else '' for i in range(min(thisx),max(thisx) + 1, 1)],rotation=320)# 重新渲染子图ax.figure.canvas.draw()line.set_data(thisx, thisy)return line# blit选择更新所有点,还是仅更新产生变化的点。应选择True
ani = animation.FuncAnimation(fig,animate,interval=600,blit=False,init_func=init)
# ani.save('jieky_animation.gif',writer='imagemagick')
plt.show()
感觉博主的帖子对你有帮助,记得点赞哦!!!
带详细注释的九个animation实例请加
QQ群:615578708
基于matplotlib.animation和python的流数据动态监控原型相关推荐
- android敏感api函数,基于敏感API调用的Android应用程序动态监控
摘要: 近年来,Android操作系统凭借其开源的优势,占领了移动操作系统市场.Android通过对外提供API接口重组资源,吸引了大量第三方开发人员创造出功能丰富的Android应用.但是,由于An ...
- 基于Matplotlib和Seaborn以及Numpy的数据可视化基础案例练习一(含数据集)
数据可视化基础案例练习一 概述 使用到的Python库 使用到的数据集 案例 1. 绘制 2000-2017 年各季度的国民生产总值散点图 2. 绘制 2000-2017 年第一产业.第二产业.第三产 ...
- MySQL数据库数据动态监控(canal+Kafka)
参考资料: 参考文章https://gper.club/articles/7e7e7f7ff3g59gc6g6d canal官网 https://github.com/alibaba/canal
- python数据图表可视化GUI,python做可视化数据图表
Python中数据可视化的两个库! 1. Matplotlib:是Python中众多数据可视化库的鼻祖,其设计风格与20世纪80年代的商业化程序语言MATLAB十分相似,具有很多强大且复杂的可视化功能 ...
- python 条形图_Python数据可视化:基于matplotlib绘制「堆积条形图」
简介 堆积条形图作为条形图的一种,能够显示单个项目与整体之间的关系.不仅可以直观的看出每个系列的值,还能够反映出系列的总和,尤其是当需要看某一项目的总和以及其组成各系列值的比重时,最适合使用堆积条形图 ...
- python柱形图代码_Python数据可视化:基于matplotlib绘制「条形图」
简介 条形图 (bar chart)是用宽度相同条形的高度或长短来表示数据多少的图形,可以横置或纵置.纵置时的条形图也称为 柱形图 (column chart). 绘制条形图 1 import mat ...
- python画条形图-Python数据可视化:基于matplotlib绘制「条形图」
简介 条形图 (bar chart)是用宽度相同条形的高度或长短来表示数据多少的图形,可以横置或纵置.纵置时的条形图也称为 柱形图 (column chart). 绘制条形图 1 import mat ...
- Python Matplotlib绘制多子图准备训练数据和GIF动画实践
我们程序员.设计人员,按需求辛辛苦苦开发出来的统计图形,往往达不到用户的要求,原因一般是表达不全面,也有内容过多而比较乱,真是众口难调. 其实,是我们表达方式与业务人员工作脱节.业务人员看了一张图或及 ...
- python matplotlib animation制作世界人口变动动画
python matplotlib animation制作世界人口变动动画 主要利用animation 做了个世界人口动画,数据从网上下载的.做成json格式的.读入pandas.没有放数据, 只是弄 ...
最新文章
- Java技术分享:Lambda表达式之接口实例化
- 自定义线程池-线程类和任务类代码实现
- mysql select 查询选后5个_mysql 查询select语句汇总
- 关于高并发的一些笔记
- 数学歌单:数学虐我千百遍,让我至今没初恋
- 报错TypeError: $(...).live is not a function解决方法
- 网站推广中增加外链的八个技巧
- 如何能够做好主动沟通
- Windows Server 2019安装Intel I219-V I211网卡驱动
- 你都用 Python 来做什么?
- 动易2006CMSSP3+动网论坛 DVBBS 7.1 SP1+Oblog 3.13绿色整合版
- Cesium场景导出为图片功能
- 【Oracle】一条SQL的一生
- STM32F1单片机零基础学习(1)
- 我们所看到的迎宾机器人,真的好用吗?
- 浏览器ocx控件安装 WINDOW10 IE浏览器 可用
- 《我的前半生》读书笔记
- 校花美美(C语言代码解析)
- 商标注册申请的步骤是怎样的
- 中兴通讯三位元老级副总裁辞职 或与违规有关
热门文章
- Python爬虫:爬取华为应用市场app数据
- 论文写作——origin画图
- java中图片排版_Java实现第八届蓝桥杯图形排版
- Mixamo不仅是可商用的免费模型动画库,还是一个在线绑定蒙皮神器
- 关于大屏项目中分辨率和高宽比的总结
- 一个电脑可以装两个java么,是否可以在一台计算机上安装多个Eclipse?
- 学习这篇总结后,你也能做出天天快报一样的推荐系统
- 17 岁成为 iOS 越狱之父,25 岁造出无人车,黑客传奇!
- codeforces 1520E. Arranging The Sheep(1400)
- 灰度值为负?问题可能出在这里