matplotlib animation的官方文档:

http://matplotlib.org/api/animation_api.html

接下来完成一个实时获取cpu数值,并绘图的功能。

1.动画的骨架

初始化空数据,初始化图形大小和背景颜色,插入子图(三个数字分别表示几行几列第几个位置),初始化图形(数据为空)。

xdata = []
ydata = []
fig = plt.figure(figsize=(18, 8), facecolor="white")
ax = fig.add_subplot(111)
line, = ax.plot(xdata, ydata, color="red")

2.更新数据

1.更新x,y。

2.更新坐x/y轴。

参数data为迭代从FuncAnimation方法frames参数传进来的数值,这样就更新了下x,y,对图形的x/y轴大小做相应的重设,再把数据通过set_data传进图形,最后再把上述的变化通过draw()方法绘制到界面上,返回line给FuncAnimation方法。。

def update(data):
x, y = data
xdata.append(x)
ydata.append(y)
xmin, xmax = ax.get_xlim()
if x >= xmax:
ax.set_xlim(0, xmax+10)
ax.figure.canvas.draw()
line.set_data(xdata, ydata)
return line,

3.获取数据

获取电脑cpu数值,并对x坐标累加。

def data_gen(): #设置xy变量
x = -1
while True:
y = psutil.cpu_percent(interval=1) #获取cpu数值,1s获取一次。
x += 1
yield x,y

4.FuncAnimation方法

FuncAnimation方法主要是与update函数做交互,将frames参数对应的数据逐条传进update函数,再由update函数返回的图形覆盖FuncAnimation原先的图形,fig参数即为一开始对应的参数,interval为每次更新的时间间隔,还有其他一些参数如blit=True控制图形精细,当界面较多子图时,为True可以使得看起来不会太卡,关键是frames参数,
可为迭代数,可为函数,也可为空,

如果你指定一个大小,其迭代则从0开始到最后该数值停止。

如果你指定一个函数,在函数循环里不断获取数据,则可以无限循环下去。

ani = animation.FuncAnimation(fig, run, data_gen, blit=False, interval=1,
repeat=False, init_func=init)
plt.show()

完整代码:

#!/usr/bin/env python
#-*-coding:utf-8 -*-
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import psutil
def data_gen(): #设置xy变量
x = -1
while True:
y = psutil.cpu_percent(interval=1) #获取cpu数值,1s获取一次。
x += 1
yield x,y
def init():
ax.set_xlim(0, 10)
ax.set_ylim(0, 100)
del xdata[:]
del ydata[:]
line.set_data(xdata, ydata)
return line, xdata = []
ydata = []
fig = plt.figure(figsize=(18, 8), facecolor="white")
ax = fig.add_subplot(111)
line, = ax.plot(xdata, ydata, color="red") # update the data
def update(data):
x, y = data
xdata.append(x)
ydata.append(y)
xmin, xmax = ax.get_xlim()
if x >= xmax:
ax.set_xlim(0, xmax+10)
ax.figure.canvas.draw()
line.set_data(xdata, ydata)
return line, ani = animation.FuncAnimation(fig,update,data_gen, blit=False, interval=1,
repeat=False, init_func=init)
plt.show()

python matplotlib动态绘图的更多相关文章

  1. 转:使用 python Matplotlib 库 绘图 及 相关问题

     使用 python Matplotlib 库绘图      转:http://blog.csdn.net/daniel_ustc/article/details/9714163 Matplotlib ...

  2. matplotlib动态绘图

    目录 package Process 解决中文乱码问题 simple_plot() scatter_plot() three_dimension_scatter() Jupyter notebook ...

  3. (转)使用 python Matplotlib 库绘图

    运行一个简单的程序例子: import matplotlib.pyplot as plt plt.plot([1,2,3]) plt.ylabel('some numbers') plt.show() ...

  4. Python——matplotlib基础绘图函数示例

    1. 2.饼图 (1) import matplotlib.pyplot as plt labels='frogs','hogs','dogs','logs'% sizes=[15,30,45,10] ...

  5. 【Python开发】使用python中的matplotlib进行绘图分析数据

    matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. 它的文档相当完备, ...

  6. 安装python Matplotlib 库

    转:使用 python Matplotlib 库 绘图 及 相关问题  使用 python Matplotlib 库绘图      转:http://blog.csdn.net/daniel_ustc ...

  7. 使用Python matplotlib做动态曲线

    今天看到“Python实时监控CPU使用率”的教程: https://www.w3cschool.cn/python3/python3-ja3d2z2g.html 自己也学习如何使用Python ma ...

  8. python强大的绘图模块matplotlib示例讲解

    Matplotlib 是 Python 的绘图库.作为程序员,经常需要进行绘图,在我自己的工作中,如果需要绘图,一般都是将数据导入到excel中,然后通过excel生成图表,这样操作起来还是比较繁琐的 ...

  9. 吴裕雄--天生自然python学习笔记:Matplotlib 基本绘图

    使用 Matplotlib 组件绘图时,经常要与 Numpy 组件搭配使用 . 使用 Matplotlib 绘图首先要导入 Matplotlib 组件 , 由于大部分绘图功能是在 matplotlib ...

随机推荐

  1. jQuery补充之jQuery扩展/form表单提交/滚动菜单

    jQuery扩展 为了避免重复造轮子,能高效使用别人的代码,所以有了扩展. jQuery扩展有两种方式: 自执行函数方式 定义函数,并执行函数. 自执行函数: (function(jq){ jq.ex ...

  2. PAT 甲级 1058 A+B in Hogwarts (20 分) (简单题)

    1058 A+B in Hogwarts (20 分)   If you are a fan of Harry Potter, you would know the world of magic ha ...

  3. sql的游标用法举例(Cursor)

    sql的游标用法举例 ), ) Declare authors_cursor Cursor For Select Name,TrueName From Account Open authors_cur ...

  4. 如何提高程序员的键盘使用效率?——ASE第一次作业

    引言 对于程序员来说,键盘输入是我们工作的基本方式,当你的手指在键盘上飞起来的时候,不但能够提高工作效率,还常常引来旁人羡慕的目光.下面将从不同方面介绍一些提高键盘使用效率的方法. 程序员最主要的文字 ...

  5. VMware虚拟机中CentOS7的硬盘空间扩容

    查看centos7系统挂载点信息 扩展VMWare-centos7硬盘空间 对新增加的硬盘进行分区.格式化 添加新LVM到已有的LVM组,实现扩容 1.查看centos7系统挂载点信息 df -h查看 ...

  6. C#使用KingAOP实现AOP面向切面编程一

    AOP面向切面编程(Aspect Oriented Programming),是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术. 实现AOP主要由两种方式,一种是编译时静态植入,优点是 ...

  7. STL源码剖析-学习笔记

    1.模板是一个公式或是蓝图,本身不是类或是函数,需进行实例化的过程.这个过程是在编译期完成的,编译器根据传递的实参,推断出形参的类型,从而实例化相应的函数 2. 后续补充-.

  8. VUE-CLI项目同一局域网手机通过IP访问电脑本地项目

    0.找到config文件夹下的index.js文件,修改host内容为hots:'0.0.0.0',此时重新运行项目,则其他设备可以通过ip进行访问 1.首先确保电脑防火墙或者杀毒软件关闭,因为大多数 ...

  9. Python爬虫入门教程之BeautifulSoup

    模块安装 pip3 install beautifulsoup4 模块导入 from bs4 import BeautifulSoup 示例html内容 RPC是一种比较流行的RPC通信框架,由谷歌公 ...

  10. CSS内联--与块级元素区别

    内联元素:1.内联元素(inline)不会独占一行,相邻的内联元素会排在同一行.其宽度随内容的变化而变化. 2.内联元素不可以设置宽高 3.内联元素可以设置margin,padding,但只在水平方向 ...