使用matplotlib动态刷新指定曲线实例


Posted in Python onApril 23, 2020

我就废话不多说啦,还是直接看代码吧!

from matplotlib import pyplot as plt
import numpy as np
 
x = np.linspace(1, 100, 20)
y = x *2 +3
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.scatter(x, y)
plt.ion()
for i in range(10):
 y = x*i*0.1 + i
 try:
  ax.lines.remove(lines[0])
 except Exception:
  pass
 lines = ax.plot(x ,y)
 plt.pause(0.1)

补充知识:用Python的matplotlib库动态显示不断增长的数据

"""
Created on Mon Dec 07 16:34:10 2015

@author: SuperWang
"""

import matplotlib.pyplot as plt
import numpy as np

fig,ax=plt.subplots()
fig2,ax2=plt.subplots()


y1=[]
y2=[]

for i in range(50):
 y1.append(np.sin(i))
 y2.append(np.cos(i))
 ax.cla()
 ax.set_title("Loss")
 ax.set_xlabel("Iteration")
 ax.set_ylabel("Loss")
 ax.set_xlim(0,55)
 ax.set_ylim(-1,1)
 ax.grid()
 ax.plot(y1,label='train')
 ax.plot(y2,label='test')
 ax.legend(loc='best')

 ax2.cla()
 ax2.set_title("Loss")
 ax2.set_xlabel("Iteration")
 ax2.set_ylabel("Loss")
 ax2.set_xlim(0,55)
 ax2.set_ylim(-1,1)
 ax2.grid()
 ax2.plot(y1,label='train')
 ax2.plot(y2,label='test')
 ax2.legend(loc='best')
 plt.pause(1)

要解决的问题如标题所示,原理很简单,就是当数据增长时,不断清空以前的绘画内容,然后把现有的数据重新画出来(数据是胡乱生成的)。

具体过程如下:

fig,ax=plt.subplots() 产生一个figure对象和一个axis对象。figure相当于一个窗口,而axis相当于一个画布。此句也可以用两句生成,即fig=plt.figure(num),括号中的参数是figure的ID,如果只需创建一个figure对象,那么可以省略。然后ax=fig.subplot(1,1,1),subplot()的具体用法可以去google或百度一下。ax.cla()就是在新数据到来时,先把之前的绘制的内容清空,接下来,ax.set_title(“Loss”),ax.set_xlabel(“Iteration”),ax.set_ylabel(“Loss”)都很简单,见名知意。ax.set_xlim(0,55),ax.set_ylim(-1,1)分别用来设置x轴和y轴的两个端点。ax.grid()给画布加上网格。ax.plot(y1,label='train'),ax.plot(y2,label='test')这两句是实际的绘制命令,其中,参数label是为以后生成图例用的。ax2.legend(loc='best')用来生成图例,loc参数代表图例位置location,而value:‘best'是其中的一种选择,除此之外,还有左上角等其他选项。最后,plt.pause(1)是为了显示上更直观,故意每绘制一次,暂停1秒,注意,这里的单位是秒。如果是实际的应用,而数据生成的过程又比较慢,此句完全可以省略。

这段代码中创建了两个窗口,在实验过程中,我发现只能有一个窗口被选中,即用鼠标点击哪个窗口,哪个窗口会动态地显示绘画过程,而另一个保持不动。

绘画过程截图如下:

使用matplotlib动态刷新指定曲线实例

以上这篇使用matplotlib动态刷新指定曲线实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
py中的目录与文件判别代码
Jul 16 Python
python实现端口转发器的方法
Mar 13 Python
在MAC上搭建python数据分析开发环境
Jan 26 Python
用python记录运行pid,并在需要时kill掉它们的实例
Jan 16 Python
django数据库migrate失败的解决方法解析
Feb 08 Python
python sys.argv[]用法实例详解
May 25 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
Aug 22 Python
Python字符串的常见操作实例小结
Apr 08 Python
浅谈Python3中strip()、lstrip()、rstrip()用法详解
Apr 29 Python
深入学习python多线程与GIL
Aug 26 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
Jan 28 Python
python 中yaml文件用法大全
Jul 04 Python
Flask模板引擎Jinja2使用实例
Apr 23 #Python
利用pandas向一个csv文件追加写入数据的实现示例
Apr 23 #Python
在matplotlib中改变figure的布局和大小实例
Apr 23 #Python
Python将二维列表list的数据输出(TXT,Excel)
Apr 23 #Python
Python基于DB-API操作MySQL数据库过程解析
Apr 23 #Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
Apr 23 #Python
Python matplotlib实时画图案例
Apr 23 #Python
You might like
从零开始的异世界生活:第二季延期后,B站上架了第二部剧场版
2020/05/06 日漫
用PHP实现Ftp用户的在线管理的代码
2007/03/06 PHP
判断是否为指定长度内字符串的php函数
2010/02/16 PHP
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
2012/06/27 PHP
php定义参数数量可变的函数用法实例
2015/03/16 PHP
简单理解PHP的面向对象编程方式
2016/05/17 PHP
JS中实现replaceAll的方法(实例代码)
2013/11/12 Javascript
js 实现浏览历史记录示例
2014/04/20 Javascript
基于NodeJS的前后端分离的思考与实践(五)多终端适配
2014/09/26 NodeJs
解决浏览器会自动填充密码的问题
2017/04/28 Javascript
读懂CommonJS的模块加载
2019/04/19 Javascript
使用VUE实现在table中文字信息超过5个隐藏鼠标移到时弹窗显示全部
2019/09/16 Javascript
微信公众号网页分享功能开发的示例代码
2020/05/27 Javascript
Vuex的热更替如何实现
2020/06/05 Javascript
Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作
2020/08/31 Javascript
[01:45]典藏宝瓶2+祈求者身心——这就是DOTA2TI9总奖金突破3000万美元的秘密
2019/07/21 DOTA
python通过字典dict判断指定键值是否存在的方法
2015/03/21 Python
Python中用函数作为返回值和实现闭包的教程
2015/04/27 Python
Python深入06——python的内存管理详解
2016/12/07 Python
python 获取网页编码方式实现代码
2017/03/11 Python
Python使用add_subplot与subplot画子图操作示例
2018/06/01 Python
Python语法分析之字符串格式化
2019/06/13 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
2019/09/06 Python
事业单位辞职信范文
2014/01/19 职场文书
入职担保书怎么写
2014/05/12 职场文书
品牌推广策划方案
2014/05/28 职场文书
2015年结对帮扶工作总结
2015/05/04 职场文书
2015年党员个人工作总结
2015/05/13 职场文书
诉讼和解协议书
2016/03/23 职场文书
干货:企业内部人才推荐奖励方案!
2019/07/09 职场文书
导游词之无锡梅园
2019/11/28 职场文书
Go 自定义package包设置与导入操作
2021/05/06 Golang
MySQL中你可能忽略的COLLATION实例详解
2021/05/12 MySQL
如何用vue实现网页截图你知道吗
2021/11/17 Vue.js
分享Python获取本机IP地址的几种方法
2022/03/17 Python
Java 数据结构七大排序使用分析
2022/04/02 Java/Android