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

这篇具有很好参考价值的文章主要介绍了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 matplotlib
from matplotlib import pyplot as plt
import 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()  # 关闭画图窗口

matplotlib 动态数据,python绘图,python,信息可视化,开发语言

 

上述代码循环产生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 plt
import numpy as np
from 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://www.toymoban.com/news/detail-626307.html

到了这里,关于Python-使用matplotlib.pyplot实现实时数据动态显示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • matplotlib pyplot 教程

    Last updated: 2022-09-23, 13:55 matplotlib.pyplot 包含一系列类似 MATLAB 的绘图函数。每个 pyplot 函数对 figure 进行一些修改,如创建 figure,在 figure 中创建 plot,在 plot 中添加线段、标签等。 matplotlib.pyplot 在不同函数调用之间维持状态不变,记录当前 figure 和绘图区域等信息,以及对当前

    2024年02月08日
    浏览(27)
  • 【Matplotlib】pyplot的高级功能

    代码 运行结果 代码分析 首先,在第09和第11行为曲线添加了标签属性,然后在第16行,通过设置plt.legend(loc=‘best’)使图例能够在画布的“最佳”位置显示,这里的“最佳”是由系统自动判别的,通常哪里留白较多,系统就将图例放到哪里,loc参数是location(位置)的简写,表

    2023年04月10日
    浏览(27)
  • Matplotlib.pyplot.plot 绘图

    Matplotlib.pyplot.scatter 散点图绘制 Matplotlib.pyplot 创建图形、在图形中创建创建一个绘图区域、在绘图区域中你那个绘制一些线、在图形中添加标签之类 format_string 控制曲线的格式字符串,可选,由颜色 字符 、 风格 字符和 标记 字符组成 颜色 字符 说明 字符 说明 字符 说明 \\\'

    2024年02月05日
    浏览(22)
  • python 设置Pyplot的动态rc参数、绘图的填充

    目录 1.全局参数定制 2.rc参数设置 例1.rc参数设置例1  例2.rc参数设置例2 例3.用set_xticks设置刻度 例4.用set_xticklabels改变刻度  3.绘图的填充 3.1调用函数fill_between()实现曲线下面部分的填充 3.2 部分区域填充 3.3 两条曲线之间的区域填充例7 使用fill_between()填充曲线之间的区域  

    2023年04月09日
    浏览(21)
  • Python如何随数据更新实时画图?Python实时动态绘图

    在数据分析和可视化场景中,我们常常需要实现实时动态图表,比如每分钟读取数据库新的记录,及时更新图表显示最新数据,而不是静态显示某个时间点的数据。本文将介绍使用Python matploblib库的animation功能实现实时动态绘图的方法。 问题背景 我们有一个Excel表,其中记录

    2024年02月12日
    浏览(37)
  • 基于Python的疫情数据可视化(matplotlib,pyecharts动态地图,大屏可视化)

    有任何学习问题可以加我微信交流哦!bmt1014 1、项目需求分析 1.1背景 2020年,新冠肺炎疫情在全球范围内爆发,给人们的健康和生命带来了严重威胁,不同国家和地区的疫情形势也引起了广泛的关注。疫情数据的监测和分析对疫情防控和科学防治至关重要。本报告以疫情数据

    2024年02月05日
    浏览(40)
  • 从静态到动态化,Python数据可视化中的Matplotlib和Seaborn

    本文分享自华为云社区《Python数据可视化大揭秘:Matplotlib和Seaborn高效应用指南》,作者: 柠檬味拥抱。 首先,确保你已经安装了Matplotlib和Seaborn库。如果没有安装,可以使用以下命令进行安装: Matplotlib是一个灵活的绘图库,支持多种图表类型。以下是一个简单的折线图的

    2024年03月25日
    浏览(41)
  • vue中组件动态传值,实现数据实时更新

    在一些项目需求中需要父组件向子组件动态传值,比如父组件动态通过axios获取数据,然后传给子组件,子组件根据拿到的数据进行展示。 props传值的时候,只会首次传递绑定的值,不会变化 方式1 利用watch监听props变化 方式2 利用ref获取子组件,调用子组件的方法将值传递过

    2024年02月16日
    浏览(37)
  • C# | 使用Chart动态展示实时折线图数据

    实时折线图是展示数据变化趋势的有效方式,可以用于监控系统性能、物理实验、股票走势等多个领域。 在C#中,我们可以使用Chart控件来实现实时折线图的展示,其动态性和可交互性可以帮助用户更好地理解数据。 本文将介绍如何使用Chart控件展示实时折线图数据,希望能

    2023年04月08日
    浏览(30)
  • Power BI实现实时动态和用户输入的数据交互

    背景:Power BI一般作为一个展示和分析数据的平台存在,即使是我们用Direct Query的mode也是受制于连接的数据库的表刷新,不能实现实时动态数据变化展示。 解决思路:当Power Apps里面输入了新的数据时,数据会写入到database的table表里面,然后通过Direct Query来连接的Power BI,发

    2024年02月07日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包