医工互联

 找回密码
 注册[Register]

手机动态码快速登录

手机号快速登录

微信登录

微信扫一扫,快速登录

QQ登录

只需一步,快速开始

查看: 264|回复: 0
收起左侧

python做出实时显示数据的图、类似心电图一样的动态图

[复制链接]

  离线 

发表于 2023-8-4 13:05:10 来自手机 | 显示全部楼层 |阅读模式 <
仅作为操作记录。
用pyqtgraph,感谢我的大佬同学。
可以做出这样的动态图
1.png

坐标轴也能跟着动
步骤
1、安装pyqtgraph。博主打开anaconda,
2.png

3.png

2、博主新建.py文件,输入代码:(可直接运行)
  1. import pyqtgraph as pg
  2. from pyqtgraph.Qt import QtCore, QtGui
  3. import numpy as np
  4. win = pg.GraphicsLayoutWidget(show=True)
  5. win.setWindowTitle('pyqtgraph example: Scrolling Plots')
  6. p2 = win.addPlot()
  7. data1 = np.random.normal(size=300)
  8. curve2 = p2.plot(data1)
  9. ptr1 = 0
  10. def update1():
  11.     global data1, ptr1
  12.     data1[:-1] = data1[1:]  # shift data in the array one sample left
  13.     data1[-1] = np.random.normal()
  14.     ptr1 += 1
  15.     curve2.setData(data1)
  16.     curve2.setPos(ptr1, 0)
  17. timer = pg.QtCore.QTimer()
  18. timer.timeout.connect(update1)
  19. timer.start(50)
  20. if __name__ == '__main__':
  21.     import sys
  22.     if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
  23.         QtGui.QApplication.instance().exec_()
复制代码

方式
先win的plot画出序列的一个图;
取序列第二到最后的数据(去除第一个数据),再加上(update函数里)一个新值,作为新的序列,再画出。画出的同时也同样的方式更新横坐标,从第二个开始,增加一个(是之前最后一个值+1)
4.png

关键:pyqtgraph画图时可以不用plot的show,而直接显示;(plot的show会中止程序运行)
pyqtgraph有定时器,可以返回更新要画出的数据。
5.png

6.png

main函数里只需直接调用
7.png

——————————————————————————————————————————
要想让串口接收到的数据这样实时显示,只需把下面这个位置-换成串口接收到的数据——前提是保证串口一次接收到的数据是一个
8.png

(如果串口一次接收到的数据是多个的话,需要对python的update1程序改变,比如不从第二个数作为新序列的起始点,可能是第5个、第6个……看串口一次接收到的数据的个数了;同时要增补的新值也不止一个了,data1[-1]可能要变成data1[-3]=……;data1[-2]=……;data1[-1]=……)
————————————————————————————————————
备注:
实时显示波形动图的方式还有matplotlib的animation(参考博主博文——传送门)
  1. ani = animation.FuncAnimation(fig, run, data_gen, blit=False, interval=10,
  2.                               repeat=False, init_func=init)
复制代码
或者使用线程(这个博主还没做出),线程可参考博主的文章
python上手线程——建立和使用

还有一种是使用
  1. import matplotlib.pyplot as plt
  2. plt.ion()
复制代码
传送门
回复

使用道具 举报

提醒:禁止复制他人回复等『恶意灌水』行为,违者重罚!
您需要登录后才可以回帖 登录 | 注册[Register] 手机动态码快速登录 微信登录

本版积分规则

发布主题 快速回复 收藏帖子 返回列表 客服中心 搜索
简体中文 繁體中文 English 한국 사람 日本語 Deutsch русский بالعربية TÜRKÇE português คนไทย french

QQ|RSS订阅|小黑屋|处罚记录|手机版|联系我们|Archiver|医工互联 |粤ICP备2021178090号 |网站地图

GMT+8, 2024-11-5 18:57 , Processed in 0.367195 second(s), 66 queries .

Powered by Discuz!

Copyright © 2001-2023, Discuz! Team.

快速回复 返回顶部 返回列表