PyQtGraph使用指南:从入门到实战

PyQtGraph使用指南:从入门到实战

pyqtgraph Fast data visualization and GUI tools for scientific / engineering applications pyqtgraph 项目地址: https://gitcode.com/gh_mirrors/py/pyqtgraph

概述

PyQtGraph是一个基于PyQt/PySide的纯Python图形用户界面库,专注于科学和工程数据的可视化。它特别适合需要快速绘制大量数据的应用场景,如实时数据采集、信号处理和科学计算等领域。本文将详细介绍PyQtGraph的几种典型使用方式。

交互式命令行使用

PyQtGraph最吸引人的特点之一就是可以在交互式环境中快速可视化数据。这对于数据分析和算法开发非常有用。

基本绘图

import pyqtgraph as pg
import numpy as np

# 生成随机数据
data = np.random.normal(size=1000)

# 简单绘图
pg.plot(data)  # 绘制一维数组

进阶绘图功能

# 绘制多条曲线
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

# 创建绘图窗口并设置红色线条
plot_widget = pg.plot(x, y1, pen='r')  
# 在同一个窗口中添加蓝色曲线
plot_widget.plot(x, y2, pen='b')  

# 创建复杂布局
win = pg.GraphicsLayoutWidget()
# 第一行第一列
win.addPlot(title="Plot 1", row=0, col=0).plot(x, y1)  
# 第一行第二列
win.addPlot(title="Plot 2", row=0, col=1).plot(x, y2)  
# 第二行跨两列
win.addPlot(title="Plot 3", row=1, col=0, colspan=2).plot(x, y1+y2)  

图像显示

# 生成二维随机图像数据
image_data = np.random.normal(size=(100, 100))
pg.image(image_data)  # 显示图像

应用程序中的弹出窗口

在开发应用程序时,PyQtGraph可以快速创建临时窗口用于调试和数据可视化:

def process_data(data):
    # 数据处理逻辑...
    processed = data * 2
    
    # 快速查看处理结果
    pg.plot(processed, title="处理后的数据")
    
    return processed

这种方法虽然简单,但在开发阶段非常高效,可以快速验证数据处理是否正确。

在PyQt应用中嵌入PyQtGraph组件

对于正式的应用程序开发,建议将PyQtGraph组件嵌入到主界面中。

基本嵌入方法

from PyQt5 import QtWidgets
import pyqtgraph as pg

class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        
        # 创建主部件
        central_widget = QtWidgets.QWidget()
        self.setCentralWidget(central_widget)
        
        # 创建布局
        layout = QtWidgets.QVBoxLayout()
        central_widget.setLayout(layout)
        
        # 创建PyQtGraph绘图部件
        self.plot_widget = pg.PlotWidget()
        layout.addWidget(self.plot_widget)
        
        # 在绘图部件上绘制数据
        self.plot_widget.plot([1, 2, 3, 4, 5], [1, 3, 2, 4, 3])

使用Qt Designer集成

  1. 在Qt Designer中创建QGraphicsView部件
  2. 右键点击该部件,选择"Promote To..."
  3. 在"Promoted class name"中输入"PlotWidget"或其他PyQtGraph部件类名
  4. 在"Header file"中输入"pyqtgraph"
  5. 点击"Add",然后点击"Promote"

这样就能在Qt Designer中使用PyQtGraph的专用部件了。

HiDPI显示支持

PyQtGraph提供了对高DPI显示器的良好支持:

import os
from PyQt5 import QtCore

# 对于Qt >= 5.14且<6.0
os.environ["QT_ENABLE_HIGHDPI_SCALING"] = "1"
QtWidgets.QApplication.setHighDpiScaleFactorRoundingPolicy(
    QtCore.Qt.HighDpiScaleFactorRoundingPolicy.PassThrough
)

# 对于Qt >= 5.6且<5.14
QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_UseHighDpiPixmaps)

PyQt与PySide兼容性

PyQtGraph支持PyQt和PySide两种Qt绑定库。它会自动检测系统中可用的库,但也可以通过环境变量强制指定:

import PySide2  # 强制使用PySide2
import pyqtgraph as pg

将PyQtGraph作为子模块嵌入项目

对于需要长期稳定的项目,可以将特定版本的PyQtGraph直接包含在项目中:

  1. 将PyQtGraph仓库克隆到项目目录中
  2. 修改导入语句指向本地副本
# 项目结构
# my_project/
#     __init__.py
#     local_pyqtgraph/  # 克隆的PyQtGraph
#     plotting.py

# plotting.py中的导入语句
import local_pyqtgraph.pyqtgraph as pg  # 使用本地副本

这种方法确保了项目使用的PyQtGraph版本不会受到系统全局安装的影响。

总结

PyQtGraph提供了从简单到复杂的多种使用方式,适合不同场景的需求。无论是快速数据可视化、应用程序开发还是长期稳定的项目部署,PyQtGraph都能提供灵活高效的解决方案。通过本文介绍的各种方法,开发者可以根据具体需求选择最适合的使用方式。

pyqtgraph Fast data visualization and GUI tools for scientific / engineering applications pyqtgraph 项目地址: https://gitcode.com/gh_mirrors/py/pyqtgraph

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

缪生栋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值