当前位置: 代码网 > it编程>编程语言>C/C++ > 示例详解pyqtgraph绘制实时更新数据的图

示例详解pyqtgraph绘制实时更新数据的图

2024年12月13日 C/C++ 我要评论
pyqtgraph是一个基于pyqt和numpy的python库,它专为实时数据可视化而设计。以绘制0~2π范围的y=sin(x)为例,基本用法的代码如下:# coding=utf-8impor

        pyqtgraph是一个基于pyqt和numpy的python库,它专为实时数据可视化而设计。以绘制0~2π范围的y=sin(x)为例,基本用法的代码如下:

# coding=utf-8
import pyqtgraph as pg
from pyqtgraph.qt import qtgui, qtcore
import numpy as np
# pyqtgraph中的颜色表示,blue:b,green:g,red:r,cyan:c,magenta:m,yellow:y,black:k,white:w
# pyqtgraph中的颜色表示也可用十六进制,如白色'#ffffff'
# 字体大小的单位有px(pixel,像素)和pt(point,点),px适用于屏幕显示,其大小是动态的,而pt适用于印刷,大小是固定的。
def update():
    global x, y
    y = np.roll(y, -1)  # 滚动数组,模拟数据更新
    curve.setdata(x, y)  # 更新曲线数据
def mouseover(pos):
    global win
    act_pos = curve.mapfromscene(pos)
    if type(act_pos) != qtcore.qpointf:
        return
    # print(act_pos.x(), act_pos.y())
    win.setwindowtitle("(x = {:.4f}, y = {:.4f})".format(act_pos.x(), act_pos.y()))
if __name__ == '__main__':
    # 创建应用
    app = qtgui.qapplication([])
    # 设置窗口界面属性
    win = pg.graphicslayoutwidget(show=true, title="实时数据更新示例")    # 设置程序界面的标题
    win.resize(800, 600)    # 设置程序界面的窗口大小
    # win.setbackground("b")    # 设置背景颜色为蓝色。默认背景是黑色,background='default'
    # 添加绘图区域
    plot = win.addplot(title="实时更新的正弦波形")    # 设置绘图的标题
    plot.showgrid(x=true, y=true)     # x轴和y轴都显示网格
    x_styles = {'color': 'r', 'font-size': '30px', 'units': 'radian'}  # 设置标签文字、颜色、字体大小、单位
    y_styles = {'color': 'r', 'font-size': '30px'}    # 设置标签文字、颜色、字体大小
    plot.setlabel('left', 'y=sin(x)',  **y_styles)    # 左边坐标轴,y轴
    plot.setlabel('bottom', 'x', **x_styles)    # 下边坐标轴,x轴
    plot.getaxis('left').setpen('#0000ff')    # 坐标轴上色
    plot.getaxis('bottom').setpen('#0000ff')    # 坐标轴上色
    plot.setxrange(min=0, max=7)    # 设置x轴刻度范围
    plot.setyrange(min=-1.2, max=1.2)    # 设置y轴刻度范围
    plot.setmouseenabled(x=false, y=false)    # 设置禁用鼠标交互,默认是启用的
    curve = plot.plot(pen="y")   # 创建一条黄色的线
    # 数据初始化
    x = np.linspace(0, 2 * np.pi, 500)
    y = np.sin(x)
    # 绑定鼠标移动的信号和槽, 移动鼠标时就在窗口标题上显示当前鼠标停留位置的坐标
    curve.scene().sigmousemoved.connect(mouseover)
    # 设置定时器,每20毫秒更新一次,相当于fps=50
    timer = qtcore.qtimer()
    timer.timeout.connect(update)
    timer.start(20)    # 每20毫秒更新一次
    # 开始事件循环
    qtgui.qapplication.instance().exec_()

运行效果截图如下:

到此这篇关于pyqtgraph绘制实时更新数据的图的文章就介绍到这了,更多相关pyqtgraph实时更新内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com