【pyqtgraph绘图】如何使用pyqtgraph

解读官方API-如何使用pyqtgraph

这里有一些使用pyqtgraph的建议方法:

  • 从交互式shell(python -i,ipython等)
  • 从应用程序显示弹出窗口
  • 在PyQt应用程序中嵌入小部件

命令行使用

PyQtGraph使得从命令行可视化数据变得非常容易。注意:

import pyqtgraph as pg
pg.plot(data)   # 数据可以是列表或numpy数组

上面的例子将打开一个窗口,显示给定数据的线图。调用  pg.plot返回创建的plot widget句柄,允许将更多数据添加到同一窗口。

注意: python提示中的交互式绘图仅适用于PyQt ;在交互式提示运行时,PySide不能运行Qt事件循环。如果您希望使用pyqtgraph与PySide交互,请参阅“控制台” 示例

更多例子:

pw = pg.plot(xVals, yVals, pen=‘r‘)  # 用红色画x-y图像
pw.plot(xVals, yVals2, pen=‘b‘)

win = pg.GraphicsWindow()  # 自动生成多任务的网格
win.addPlot(data1, row=0, col=0)
win.addPlot(data2, row=0, col=1)
win.addPlot(data3, row=1, col=0, colspan=2)

pg.show(imageData)  # imageData 必须是2到4维的numpy数组

我们在这里只是表面上看 - 这些函数接受许多不同的数据格式和选项来自定义数据的外观。

在应用程序中显示窗口

虽然我认为这种方法有些懒惰,但通常情况下“懒惰”与“高效”无法区分。这里的方法只是使用与命令行中使用的功能完全相同的功能,但是在现有应用程序中。当我只是想在我的应用程序中获得关于数据状态的即时反馈而不花时间为它构建用户界面时,我经常使用它。

在PyQt应用程序中嵌入小部件

对于严谨的应用程序开发人员,pyqtgraph中的所有功能都可以通过像其他任何Qt小部件一样嵌入来使用。

最重要的一些控件如:PlotWidgetImageViewGraphicsLayoutWidget,和GraphicsView

PyQtGraph的小部件可以通过“Promote To ...”功能包含在Qt-Designer的ui文件中:

  • Designer中,创建一个QGraphicsView小部件(“Graphics View”类别下的“Display Widgets”)。
  • 用鼠标右键单击QGraphicsView并选择““Promote To...”。
  • 在“Promoted calss name”下,输入您希望使用的类名称(“PlotWidget”,“GraphicsLayoutWidget”等)。
  • 在“Header file”下,输入“pyqtgraph”。
  • 点击“Add”,然后点击“Promote”。

有关提升窗口小部件的更多信息,请参阅设计器文档。“VideoSpeedTest”和“ScatterPlotSpeedTest”示例都演示了如何使用pyuic4或pyside-uic编译为.py模块的.ui文件。“designerExample”示例演示了如何从.ui文件动态生成python类(不需要pyuic4 / pyside-uic)。

PyQt和PySide

PyQtGraph支持Qt库的两个流行的python包装器:PyQt和PySide。两个软件包都提供几乎相同的API和功能,但由于各种原因(在别处讨论),您可能更喜欢使用一个软件包或另一个软件包。首次导入pyqtgraph时,它会通过进行填充检查自动确定要使用的库:

  1. 如果已导入PyQt5,请使用它
  2. 否则,如果已导入PySide,请使用它
  3. 否则,尝试导入PyQt5
  4. 如果导入失败,请尝试导入PySide。

如果您的系统上安装了两个库,并且您希望强制pyqtgraph使用其中一个,只需确保在pyqtgraph之前导入它:

import PySide  ## this will force pyqtgraph to use PySide instead of PyQt5
import pyqtgraph as pg

将PyQtGraph库导入到大型项目中

在编写使用pyqtgraph的应用程序或python包时,通常在系统范围内(或在virtualenv中)安装pyqtgraph,并在应用程序内调用import pyqtgraph。 这样做的主要好处是pyqtgraph是独立于应用程序进行配置的,因此您(或您的用户)可以自由安装较新版本的pyqtgraph,而无需在应用程序中更改任何内容。 这是用python开发时的标准做法。

然而,特别是对于科学应用来说,情况也是如此,即软件是为特定目的而编写的,然后进行存档。如果我们想要确保软件在十年后仍能正常工作,那么最好将应用程序绑定到一个特定版本的pyqtgraph上,并避免导入系统安装的pyqtgraph版本,这可能会更新(可能不兼容)。尤其当应用程序需要对主要版本中可能不存在的pyqtgraph软件包进行特定的修改时,情况如此。

PyQtGraph通过两种机制来促进这种用法。首先,pyqtgraph中的所有内部导入语句都是相对的,它允许将包重命名或用作子包,而不会与系统中其他版本的pyqtgraph产生任何命名冲突(即,pyqtgraph从未在内部将其自身称为“pyqtgraph ”)。其次,可以在 https://github.com/pyqtgraph/pyqtgraph-core.git 找到一个git树状子目录存储库,它只包含‘pyqtgraph /‘树状子目录,允许将代码直接克隆为使用它的应用程序的子目录。

基本的方法是将存储库克隆到包中的适当位置。从包中导入pyqtgraph时,一定要使用全名来避免导入任何系统安装的pyqtgraph包。例如,假设一个简单的项目具有以下结构:

my_project/
    __init__.py
    plotting.py
        """Plotting functions used by this package"""
        import pyqtgraph as pg
        def my_plot_function(*data):
            pg.plot(*data)

要导入特定版本的pyqtgraph,我们将克隆在项目中的pyqtgraph-core 库:

my_project$ git clone https://github.com/pyqtgraph/pyqtgraph-core.git

然后相应地调整导入语句:

my_project/
    __init__.py
    pyqtgraph/
    plotting.py
        """Plotting functions used by this package"""
        import my_project.pyqtgraph as pg  # 确保使用本地的子包,而不是使用全局安装的版本

        def my_plot_function(*data):
            pg.plot(*data)

使用 git checkout pyqtgraph-core-x.x.x 选择特定版本的存储库,或使用 git pull 从上游拉取pyqtgraph更新(有关更多信息,请参阅git文档)。

对于已经使用git进行代码控制的项目,也可以在你自己的仓库中包含pyqtgraph作为git树状子目录。 这种方法的主要优点是,除了能够从上游存储库中获取pyqtgraph更新之外,还可以将本地pyqtgraph更改提交到项目存储库并向上游推送这些更改:

my_project$ git remote add pyqtgraph-core https://github.com/pyqtgraph/pyqtgraph-core.git
my_project$ git fetch pyqtgraph-core
my_project$ git merge -s ours --no-commit pyqtgraph-core/core
my_project$ mkdir pyqtgraph
my_project$ git read-tree -u --prefix=pyqtgraph/ pyqtgraph-core/core
my_project$ git commit -m "Added pyqtgraph to project repository"

原文地址:https://www.cnblogs.com/XJT2018/p/10275278.html

时间: 2024-10-30 04:04:51

【pyqtgraph绘图】如何使用pyqtgraph的相关文章

【pyqtgraph绘图】安装pyqtgraph

解读官方API-安装 安装 参考:http://www.pyqtgraph.org/documentation/installation.html 根据您的需要,有许多不同的方式来安装pyqtgraph,使用Python pip命令最简洁高效: pip install pyqtgraph 要访问最新的功能和错误修正,请从github复制pyqtgraph: git clone https://github.com/pyqtgraph/pyqtgraph 到github上下载源代码安装pyqtgr

【pyqtgraph绘图】线条,填充和颜色

解读官方API-线条,填充和颜色 参考: http://www.pyqtgraph.org/documentation/style.html 线条,填充和颜色 Qt依靠其QColor,QPen和QBrush类来为其所有绘图指定线条和填充样式. 在pyqtgraph中也使用相同的系统,但pyqtgraph也允许许多指定相同样式选项的简写方法. pyqtgraph中的许多函数和方法都接受指定线条样式(笔),填充样式(笔刷)或颜色的参数.对于大多数这些函数参数,可以使用以下值: 表示颜色的单字符字符(

【PyQt5】使用pyqtgraph绘图时UI卡顿的解决

思路是把所有数据处理计算的过程放在主线程之外的子线程内 问题,如果不对数据进行剪裁,长时间过后主线程内的绘图会消耗比较多的时间 from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5 import QtWidgets,QtGui,QtCore import pyqtgraph as pg import sys,os,random,time,psutil class

【pyqtgraph绘图】Qt速成课程

解读官方API-Qt速成课程 参考:http://www.pyqtgraph.org/documentation/qtcrashcourse.html Qt速成课程 PyQtGraph广泛使用Qt来生成几乎所有的可视化输出和接口.Qt的文档编写得非常好,我们鼓励所有pyqtgraph开发人员熟悉它. 本节的目的是介绍使用Qt(使用PyQt或PySide)为pyqtgraph开发人员编程. QWidgets和布局 Qt GUI几乎总是由几个基本组件组成: 一个窗口.这通常由QMainWindow提

【pyqtgraph绘图】案例-动态的正余弦波形图

先看一个简单的小例子: 完整代码: import numpy as np import pyqtgraph as pg import sys from PyQt5.QtWidgets import QWidget,QApplication,QFrame,QGridLayout,QVBoxLayout class Example(QWidget): def __init__(self): super(Example, self).__init__() self.initUI() self.gene

Python3.x+pyqtgraph实皇冠现体育网站开发数据可视化

1.pyqtgraph库数据皇冠体育网站开发haozbbs.comQ1446595067可视化效果还不错,特别是窗体程序中图像交互性较好:安装也很方便,用 pip 安装. 2.在Python中新建一个 .py 文件,然后写入如下代码并执行可以得到官方提供的很多案例(含代码),出现如下界面图像: import pyqtgraph.examples pyqtgraph.examples.run() 图1 图2 图3 4.程序默认是黑色背景,这个是可以修改的.比如,在程序的开头部分写入如下代码就可以修

python pyqtgraph 保存图片到本地

pyqtgraph官方给的示例居然会报错2333 官方文档传送门:#####pyqtgraph export pyqtgraph支持在可视化窗口中右键保存(Exporting from the GUI)试了一下只能保存为svg格式, 保存为png会闪退不知道是我这里的原因还是这里有bug,我希望直接生成图片(Exporting from the API) 先查看本地site-packages里面有test文件,里面有生成svg的版本画出来的图是svg格式只能放在浏览器看不能改后缀名 而我希望生成

Python Weekly 419

文章,教程或讲座 如何用 Dropbox Security 构建用于日志系统的威胁检测和事件响应的工具 https://blogs.dropbox.com/tech/2019/10/how-dropbox-security-builds-better-tools-for-threat-detection-and-incident-response/ 传统上,构建威胁检测和响应工具的最常见方法是将自动化部分和调查部分分离.根据我们的经验,这可能会导致很多崩溃.在 Dropbox,我们已经为我们的日

pyqtgraph连续刷新波形图例子

1 # -*- coding: utf-8 -*-# 2 3 #------------------------------------------------------------------------------- 4 # Name: 1 5 # Description: 6 # Author: Administrator 7 # Date: 2018/5/28 8 #------------------------------------------------------------