博客
关于我
python | pyqtgraph,一个神奇的 Python 库!
阅读量:797 次
发布时间:2023-03-06

本文共 5194 字,大约阅读时间需要 17 分钟。

PyQtGraph 库是一个功能强大且易于使用的图形库,能够帮助开发者在各种应用场景中高效地进行数据可视化。作为基于 PyQt/PySide 的高性能图形库,PyQtGraph 特别适用于需要快速绘图和实时数据更新的应用场景。无论是科学计算、工程还是数据分析,它都能通过支持交互式操作和丰富的图形类型,成为开发者的得力助手。

安装

PyQtGraph 可通过 pip 直接安装:

pip install pyqtgraph

此外,PyQtGraph 还依赖于 PyQt 或 PySide 中的一种,可以选择安装:

pip install pyqt5# 或 pip install pyside2

安装完成后,可以通过以下命令确认是否安装成功:

import pyqtgraph as pgprint(pg.__version__)

功能特点

PyQtGraph 具备以下特点:

  • 高性能:通过优化的绘图算法,提供高效的实时数据绘制能力。
  • 交互性:支持缩放、平移、选择等交互操作。
  • 多平台支持:兼容 Windows、macOS 和 Linux。
  • 丰富的图形类型:支持折线图、散点图、条形图、图像、3D 图形等多种类型。
  • 集成方便:与 PyQt/PySide 无缝集成,适用于构建复杂的图形用户界面。
  • 基本使用示例

    创建简单的折线图

    可以通过以下代码创建一个简单的折线图:

    import pyqtgraph as pgfrom pyqtgraph.Qt import QtGuiapp = QtGui.QApplication([])win = pg.GraphicsLayoutWidget(show=True, title="Basic Plot Example")plot = win.addPlot(title="折线图示例")x = [1, 2, 3, 4, 5]y = [10, 20, 30, 40, 50]plot.plot(x, y, pen=pg.mkPen(color='b', width=2))QtGui.QApplication.instance().exec_()

    创建交互式散点图

    可以创建一个交互式散点图,并支持缩放和平移操作:

    import pyqtgraph as pgfrom pyqtgraph.Qt import QtGuiimport numpy as npapp = QtGui.QApplication([])win = pg.GraphicsLayoutWidget(show=True, title="Scatter Plot Example")plot = win.addPlot(title="散点图示例")x = np.random.normal(size=100)y = np.random.normal(size=100)plot.plot(x, y, pen=None, symbol='o', symbolPen=None, symbolSize=10, symbolBrush=(255, 0, 0, 150))QtGui.QApplication.instance().exec_()

    实时更新图表

    可以创建一个实时更新的图表,用于显示实时数据:

    import pyqtgraph as pgfrom pyqtgraph.Qt import QtGui, QtCoreimport numpy as npapp = QtGui.QApplication([])win = pg.GraphicsLayoutWidget(show=True, title="Real-time Plot Example")plot = win.addPlot(title="实时更新图表示例")curve = plot.plot()data = np.random.normal(size=100)ptr = 0def update():    global data, ptr    data[:-1] = data[1:]    data[-1] = np.random.normal()    curve.setData(data)    ptr += 1timer = QtCore.QTimer()timer.timeout.connect(update)timer.start(50)QtGui.QApplication.instance().exec_()

    高级功能

    3D 绘图

    可以使用 PyQtGraph 创建 3D 绘图:

    import pyqtgraph as pgfrom pyqtgraph.Qt import QtGuiimport pyqtgraph.opengl as glimport numpy as npapp = QtGui.QApplication([])w = gl.GLViewWidget()w.show()w.setWindowTitle('3D Plot Example')g = gl.GLGridItem()w.addItem(g)pos = np.random.normal(size=(1000, 3))sp = gl.GLScatterPlotItem(pos=pos, color=(1, 1, 1, 1), size=0.1)w.addItem(sp)QtGui.QApplication.instance().exec_()

    图像显示

    可以使用 PyQtGraph 显示图像,并进行交互操作:

    import pyqtgraph as pgfrom pyqtgraph.Qt import QtGuiimport numpy as npapp = QtGui.QApplication([])win = pg.GraphicsLayoutWidget(show=True, title="Image Display Example")view = win.addViewBox()view.setAspectLocked(True)img = pg.ImageItem()view.addItem(img)data = np.random.normal(size=(100, 100))img.setImage(data)QtGui.QApplication.instance().exec_()

    多图表布局

    可以在一个窗口中创建多个图表,形成复杂的布局:

    import pyqtgraph as pgfrom pyqtgraph.Qt import QtGuiapp = QtGui.QApplication([])win = pg.GraphicsLayoutWidget(show=True, title="Multiple Plots Example")p1 = win.addPlot(title="Plot 1")p2 = win.addPlot(title="Plot 2")win.nextRow()p3 = win.addPlot(title="Plot 3")p4 = win.addPlot(title="Plot 4")x = [1, 2, 3, 4, 5]y = [10, 20, 30, 40, 50]p1.plot(x, y, pen=pg.mkPen(color='r', width=2))p2.plot(x, [i**2 for i in y], pen=pg.mkPen(color='g', width=2))p3.plot(x, [i**3 for i in y], pen=pg.mkPen(color='b', width=2))p4.plot(x, [np.log(i) for i in y], pen=pg.mkPen(color='y', width=2))QtGui.QApplication.instance().exec_()

    应用场景

    数据监控系统

    在工业监控系统中,通过 PyQtGraph 实时显示传感器数据,进行状态监控和异常检测:

    import pyqtgraph as pgfrom pyqtgraph.Qt import QtGui, QtCoreimport numpy as npapp = QtGui.QApplication([])win = pg.GraphicsLayoutWidget(show=True, title="Data Monitoring System")plot = win.addPlot(title="实时传感器数据")curve = plot.plot()data = np.random.normal(size=100)ptr = 0def update():    global data, ptr    data[:-1] = data[1:]    data[-1] = np.random.normal()    curve.setData(data)    ptr += 1timer = QtCore.QTimer()timer.timeout.connect(update)timer.start(100)QtGui.QApplication.instance().exec_()

    科学研究

    在科学研究中,通过 PyQtGraph 可视化实验数据,帮助研究人员分析和理解数据规律:

    import pyqtgraph as pgfrom pyqtgraph.Qt import QtGuiimport numpy as npapp = QtGui.QApplication([])win = pg.GraphicsLayoutWidget(show=True, title="Scientific Research Visualization")plot = win.addPlot(title="实验数据可视化")x = np.linspace(0, 10, 1000)y = np.sin(x)curve = plot.plot()curve.setData(x, y, pen=pg.mkPen(color='b', width=2))QtGui.QApplication.instance().exec_()

    金融数据分析

    在金融数据分析中,通过 PyQtGraph 显示股票价格和交易量等数据,辅助投资决策:

    import pyqtgraph as pgfrom pyqtgraph.Qt import QtGuiimport numpy as npapp = QtGui.QApplication([])win = pg.GraphicsLayoutWidget(show=True, title="Financial Data Analysis")price_plot = win.addPlot(title="Stock Price")price_curve = price_plot.plot()volume_plot = win.addPlot(title="Trading Volume")volume_curve = volume_plot.plot()dates = np.arange(100)prices = np.cumsum(np.random.randn(100)) + 100volumes = np.random.randint(100, 1000, size=100)price_curve.setData(dates, prices, pen=pg.mkPen(color='g', width=2))volume_curve.setData(dates, volumes, pen=pg.mkPen(color='r', width=2))QtGui.QApplication.instance().exec_()

    总结

    PyQtGraph 库是一个功能强大且易于使用的图形库,能够帮助开发者在各种应用场景中高效地进行数据可视化。通过支持高性能的实时绘图、丰富的图形类型和交互操作,PyQtGraph 提供了强大的功能和灵活的扩展能力。本文详细介绍了 PyQtGraph 库的安装方法、主要特性、基本和高级功能,以及实际应用场景。希望本文能帮助大家全面掌握 PyQtGraph 库的使用,并在实际项目中发挥其优势。无论是在数据监控、科学研究还是金融数据分析中,PyQtGraph 库都将是一个得力的工具。

    转载地址:http://rzofk.baihongyu.com/

    你可能感兴趣的文章
    Python web自动化测试 —— 文件上传
    查看>>
    Python web自动化测试 —— 文件上传!
    查看>>
    Python Web自动化测试开发环境搭建(附安装包与虚拟机环境)
    查看>>
    python win32api键盘_Python win32api.keybd_event模拟键盘输入
    查看>>
    python Windows显示当前鼠标坐标
    查看>>
    python Workbook 表格宽度
    查看>>
    python write报错a byte-like object is required.not str
    查看>>
    PYTHON调用大模型实现图片生成
    查看>>
    python yaml.dump 缩进错误
    查看>>
    Python yield generator
    查看>>
    Python yield 使用浅析
    查看>>
    Python yield解析:深入理解生成器的魔力
    查看>>
    Python You are using pip version 10.0.1, however version 19.3.1 is available.
    查看>>
    python zipfile模块学习笔记(一)
    查看>>
    Python zip函数 详解(全)
    查看>>
    Python \r\n与\n的转换
    查看>>
    python __new__中单例的作用
    查看>>
    python | aiofiles,一个超酷的 Python 库!
    查看>>
    python | akshare,一个超强的 开源Python 金融数据接口库!
    查看>>
    python | alabaster,一个强大的 关于alabaster 主题 Python 库!
    查看>>