我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python-使用matplotlib.pyplot实现实时数据动态显示

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python-使用matplotlib.pyplot实现实时数据动态显示

目录

一、引言

二、从一块代码开始

1、%matplotlib qt5

2、plt.icon

三、另一种在行内(Jupyter Notebook内)展示动态图形的方法

1、display和display.clear_output()


一、引言

用python做仿真一个痛点就是不能像netlogo等一些其他软件可以很方便地实现实时数据可视化,也正是由于这一点,调试仿真系统时不够直观。因此,掌握如何根据仿真系统即时生成的数据绘制动态图形很重要。

已经有几位博主给出了详细的博文,这里给大家列举出来。为了增加点新东西,本文对实现实时数据动态显示的代码做出一些解析,方便大家读懂代码。

python中plot实现即时数据动态显示方法_plt实时显示_windSeS的博客-CSDN博客https://blog.csdn.net/u013468614/article/details/58689735python matplotlib.pyplot如何绘制实时图表?(实时绘制、更新图表、实时更新、动态窗口)plt.ion() plt.clf() plt.pause() plt.ioff()_python pyplot 实时 图_Dontla的博客-CSDN博客https://blog.csdn.net/Dontla/article/details/106559106matplotlib 绘制实时动态曲线图_颹蕭蕭的博客-CSDN博客https://blog.csdn.net/itnerd/article/details/109062516

二、从一块代码开始

import matplotlibfrom matplotlib import pyplot as pltimport numpy as np%matplotlib qt5#在spyder等集成开发环境中改为matplotlib.use('QtAgg')# 创建实时绘制横纵轴变量x = []y = []# 创建绘制实时损失的动态窗口plt.ion()# 创建循环for i in range(30):    x.append(i)# 添加i到x轴的数据中    y.append(i**2)# 添加i的平方到y轴的数据中    plt.clf()  # 清除之前画的图    plt.plot(x, y * np.array([-1]))  # 画出当前x列表和y列表中的值的图形    plt.pause(0.001)  # 暂停一段时间,不然画的太快会卡住显示不出来    plt.ioff()  # 关闭画图窗口

 

上述代码循环产生i和i的平方,并将循环产生的数据交给plt绘制曲线图。正常情况下,曲线图会一张一张的绘制出来,关键就在于%matplotlib qt5和plt.icon()

1、%matplotlib qt5

`%matplotlib qt5` 是一个Jupyter Notebook的魔术命令,用于在Qt5后端中显示Matplotlib生成的图形。Matplotlib是一个用于数据可视化的Python库,而Qt5是一个跨平台的用户界面工具包

当你在Jupyter Notebook中使用Matplotlib绘制图形时,默认情况下,图形会以静态图片的形式显示在Notebook中。但是,有时候你可能希望以交互方式显示图形,以便更好地探索和操作图形。这时就可以使用`%matplotlib qt5`命令。

该命令会将Matplotlib的后端设置为Qt5,这意味着Matplotlib会使用Qt5库来创建一个独立的图形窗口,将图形显示在其中。这个窗口是一个可交互的界面,你可以缩放、平移、旋转和保存图形等操作。

使用`%matplotlib qt5`命令后,当你调用Matplotlib的绘图函数时,图形将会在一个独立的窗口中显示,而不是在Notebook中直接显示。这使得你可以更方便地探索和交互地操作图形,特别是对于复杂的图形和大量的数据点

另外,如果你想恢复到默认的静态图形显示方式,可以使用`%matplotlib inline`命令。这将把Matplotlib的后端设置为内联模式,图形将再次以静态图片的形式显示在Notebook中。

2、plt.icon

plt.ion()是 Matplotlib 库中的一个函数,用于开启交互模式(interactive mode)。它可以让图形在绘制后立即显示,而不需要等待plt.show() 的调用。

在默认情况下,Matplotlib 的绘图操作是阻塞的,即在调用 plt.show()之前,代码会一直阻塞在绘图函数处,直到手动关闭图形窗口后才会继续执行后续代码。这种模式适用于静态图形展示,但不适合需要实时更新图形的交互式应用场景。

使用 plt.ion()函数可以将 Matplotlib 设置为交互模式,开启非阻塞的绘图操作。这意味着在调用绘图函数后,图形会立即显示在窗口中,然后代码会继续执行后续的操作,而不需要显式地调用 plt.show()。当更新图形时,新的图形会立即在窗口中显示,无需手动关闭图形窗口。

调用 plt.ioff()可以关闭交互模式。

上述内容针对非IPython的开发环境,在Jupyter Notebook中,即使没有plt.ion()图形也可以实时显示而不需要plt.show(),也不需要手动关闭绘图窗口以使代码继续运行。

三、另一种在行内(Jupyter Notebook内)展示动态图形的方法

from matplotlib import pyplot as pltimport numpy as npfrom IPython import display%matplotlib inline# 创建实时绘制横纵轴变量x = []y = []# 创建绘制实时损失的动态窗口plt.ion()# 创建循环for i in range(30):    x.append(i)# 添加i到x轴的数据中    y.append(i**2)# 添加i的平方到y轴的数据中    plt.clf()  # 清除之前画的图    plt.plot(x, y * np.array([-1]))  # 画出当前x列表和y列表中的值的图形    plt.pause(0.001)  # 暂停一段时间,不然画的太快会卡住显示不出来    display.clear_output(wait=True)    plt.ioff()  # 关闭画图窗口

使用上述代码即可实现在Jupyter Notebook内展示动态图形,其关键在于IPython中的display.clear_output()

1、display和display.clear_output()

display是用于在IPython环境下进行交互式显示和操作的模块,IPython是一个增强版的交互式Python解释器,它提供了许多用于交互式计算和数据可视化的功能。Jupyter Notebook就是基于IPython内核的。

导入`display`模块后,你可以使用其中的函数来实现一些特定的显示操作,例如:
1. `display.display()`: 用于在IPython中显示对象。它会自动选择适当的显示方式,可以显示图像、HTML内容、Markdown文本、Pandas数据框等等。它在Jupyter Notebook中常用于在代码中间或循环中实时显示结果。
2. `display.clear_output()`: 清除IPython输出区域的内容,用于清除之前的输出,以便进行新的显示。
3. `display.HTML()`: 显示HTML内容,可以用于在IPython中嵌入并展示富文本内容或交互式组件。
4. `display.Image()`: 显示图像文件,可以在IPython中显示本地或远程图像文件。
5. `display.Audio()`: 播放音频文件,可以在IPython中播放本地或远程音频文件。
6. `display.Video()`: 播放视频文件,可以在IPython中播放本地或远程视频文件。
这些函数提供了一种灵活的方式来处理不同类型的数据和内容,并以交互式方式在IPython环境中进行显示。它们对于数据分析、实验结果展示和交互式演示等场景非常有用。

display.clear_output(wait=True) 是display模块中的函数,用于在IPython环境中清除输出区域的内容,wait=True表示直到下一次输出产生时才清除原本输出区域的内容。这样做类似于动画中的帧,不断刷新的帧让人感觉是连续变化的动态图形。

需要注意的是,display.clear_output(wait=True) 函数只能在IPython环境中使用,例如Jupyter Notebook或IPython终端。在其他Python环境中,如普通的Python脚本或命令行交互式解释器中,该函数将不起作用。

来源地址:https://blog.csdn.net/qq_45270849/article/details/131456577

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python-使用matplotlib.pyplot实现实时数据动态显示

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Vue Echarts实现实时大屏动态数据显示

同大多数的前端框架一样,先读官网的使用方法。学会基本使用后,在实例中找到自己想要demo。拿过来改一改,一个echarts图表就形成,毕竟人家做就是为了方便使用,这篇文章主要介绍了Vue Echarts实现实时大屏动态数据显示
2022-11-13

layui table如何实现数据的动态列显示?(layui table动态列显示功能的实现)

layuiTable的动态列显示功能允许用户隐藏或显示特定列,以提高表格可用性、优化性能和增强灵活性。通过定义列配置、设置表格选项并使用hideColumn和showColumn方法,可以实现动态列显示。此功能可减少渲染时间、加载大小和用户交互,提升表格的使用体验。
layui table如何实现数据的动态列显示?(layui table动态列显示功能的实现)
2024-04-02

html+js实现动态显示本地时间

显示本地时间的方法有很多,在本文将为大家介绍下如何使用html+js实现动态显示本地时间,感兴趣的朋友可以了解下
2022-11-15

使用Django与AJAX怎么实现一个网页动态数据显示功能

今天就跟大家聊聊有关使用Django与AJAX怎么实现一个网页动态数据显示功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。环境windows10pycharm2017.3.3 pr
2023-06-06

tkinter动态显示时间的两种实现方法

这篇文章主要介绍了tkinter动态显示时间的两种实现方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-01-28

如何使用JavaWeb实现显示mysql数据库数据

小编给大家分享一下如何使用JavaWeb实现显示mysql数据库数据,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!EMS-员工信息管理系统MySQL学习之基础操作
2023-06-29

python爬虫等获取实时数据+Flume+Kafka+Spark Streaming+mysql+Echarts实现数据动态实时采集、分析、展示

使用爬虫等获取实时数据+Flume+Kafka+Spark Streaming+mysql+Echarts实现数据动态实时采集、分析、展示主要工作流程如下所示:其中爬虫获取实时数据,并把数据实时传输到Linux本地文件夹中。使用Flume实时监控该文件夹,如果
python爬虫等获取实时数据+Flume+Kafka+Spark Streaming+mysql+Echarts实现数据动态实时采集、分析、展示
2020-03-13

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录