使用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 相关文章推荐
python实现监控linux性能及进程消耗性能的方法
Jul 25 Python
python中二维阵列的变换实例
Oct 09 Python
在Python中操作文件之seek()方法的使用教程
May 24 Python
python爬虫headers设置后无效的解决方法
Oct 21 Python
tensorflow 1.0用CNN进行图像分类
Apr 15 Python
使用matplotlib画散点图的方法
May 25 Python
python读取和保存图片5种方法对比
Sep 12 Python
Python综合应用名片管理系统案例详解
Jan 03 Python
Python编程快速上手——Excel到CSV的转换程序案例分析
Feb 28 Python
Python sorted对list和dict排序
Jun 09 Python
基于python实现坦克大战游戏
Oct 27 Python
如何利用Python实现一个论文降重工具
Jul 09 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
PHP语言中global和$GLOBALS[]的分析 之二
2012/02/02 PHP
PHP爆绝对路径方法收集整理
2012/09/17 PHP
如何获知PHP程序占用多少内存(memory_get_usage)
2012/09/23 PHP
php单例模式示例分享
2015/02/12 PHP
PHP实现的简单操作SQLite数据库类与用法示例
2017/06/19 PHP
PHP观察者模式定义与用法实例分析
2019/03/22 PHP
使用javascript访问XML数据的实例
2006/12/27 Javascript
JavaScript语言中的Literal Syntax特性分析
2007/03/08 Javascript
jQuery调用WebService的实现代码
2011/06/19 Javascript
IE8下String的Trim()方法失效的解决方法
2013/11/08 Javascript
jQuery 回车事件enter使用示例
2014/02/18 Javascript
表单序列化与jq中的serialize使用示例
2014/02/21 Javascript
jQuery模拟原生态App上拉刷新下拉加载更多页面及原理
2015/08/10 Javascript
jQuery图片轮播滚动切换代码分享
2020/04/20 Javascript
详解JavaScript中常用的函数类型
2015/11/18 Javascript
jQuery mobile 移动web(4)
2015/12/20 Javascript
javaScript数组迭代方法详解
2016/04/14 Javascript
javascript url几种编码方式详解
2016/06/06 Javascript
JS批量替换内容中关键词为超链接
2017/02/20 Javascript
ES6新特性二:Iterator(遍历器)和for-of循环详解
2017/04/20 Javascript
Angular自定义组件实现数据双向数据绑定的实例
2017/12/11 Javascript
Vue.extend实现挂载到实例上的方法
2019/05/01 Javascript
JS实现前端动态分页码代码实例
2020/06/02 Javascript
原生jQuery实现只显示年份下拉框
2020/12/24 jQuery
Python代理抓取并验证使用多线程实现
2013/05/03 Python
跟老齐学Python之用Python计算
2014/09/12 Python
对命令行模式与python交互模式介绍
2018/05/12 Python
python实现自动登录
2018/09/17 Python
python里dict变成list实例方法
2019/06/26 Python
如何更改 pandas dataframe 中两列的位置
2019/12/27 Python
Python greenlet和gevent使用代码示例解析
2020/04/01 Python
Python importlib动态导入模块实现代码
2020/04/16 Python
外贸业务员岗位职责
2013/11/24 职场文书
数控技术应用个人求职信范文
2014/02/03 职场文书
慰问信(范文3篇)
2019/10/23 职场文书
Linux中Nginx的防盗链和优化的实现代码
2021/06/20 Servers