广告
返回顶部
首页 > 资讯 > 后端开发 > Python >PyQt5使用pyqtgraph绘制波形图
  • 169
分享到

PyQt5使用pyqtgraph绘制波形图

PyQt5pyqtgraph绘制波形图PyQt5pyqtgraph波形图PyQt5pyqtgraph 2023-01-13 18:01:18 169人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录主程序代码UI界面设计控件提升UI设计文件UI生成文件运行效果主程序代码 import sys import numpy as np from PyQt5.QtGui impor

主程序代码

import sys
import numpy as np
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *

import pyqtgraph as pg

from ui_demo02 import Ui_MainWindow


class GraphDemowWindow(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(GraphDemowWindow, self).__init__(parent)
        self.setupUi(self)

        pg.setConfiGoptions(antialias=True) # 设置开启抗锯齿

        self.drawGraphicsLayoutWidget()
        self.drawPoltWidget()

    # 在QWidget控件提升为pyqtgraph.GraphicsLayoutWidget类型的控件上画波形
    def drawGraphicsLayoutWidget(self):
        # pyqtgraph.GraphicsLayoutWidget 支持的方法有:
        # ['nextRow', 'nextCol', 'nextColumn', 'addPlot', 'addViewBox', 'addItem', 'getItem', 'addLayout', 'addLabel', 'removeItem', 'itemIndex', 'clear']
        self.graphicsLayout.clear() # 清除
        plt1 = self.graphicsLayout.addPlot(y=np.random.nORMal(size=1000), title="温度")
        plt2 = self.graphicsLayout.addPlot(y=np.random.normal(size=500), title="湿度")
        self.graphicsLayout.nextRow() # 图像坐标换行
        plt3 = self.graphicsLayout.addPlot(y=np.random.normal(size=800), title="光照度")
        plt4 = self.graphicsLayout.addPlot(y=np.random.normal(size=800), title="紫外线强度")


    # 在QWidget控件提升为pyqtgraph.PlotWidget类型的控件上画波形
    def drawPoltWidget(self):
        # pyqtgraph.PlotWidget 支持的方法有:
        # ['addItem', 'removeItem', 'autoRange', 'clear', 'setAxisItems', 'setXRange', 
        #           'setYRange', 'setRange', 'setAspectLocked', 'setMouseEnabled', 
        #           'setXLink', 'setYLink', 'enableAutoRange', 'disableAutoRange', 
        #           'setLimits', 'reGISter', 'unregister', 'viewRect']
        

        # pen = pg.mkPen(255, 0, 0)
        # pen = pg.mkPen("#ff0000")
        # pen = pg.mkPen(color='r', width=3)
        pen = pg.mkPen({'color':'0F0', 'width':1})
        plt1 = self.graPHPlot.plot(np.random.normal(size=100), pen=pen,  symbolBrush=(255, 0, 0), symbolPen=(0, 255, 0))

        pen2 = pg.mkPen(color="F00", width=1)
        plt2 = self.graphplot.plot(np.random.normal(size=50), pen=pen2,  symbolBrush=(0, 255, 0), symbolPen=(255, 0, 0))

        self.graphPlot.setAntialiasing(True)
        self.graphPlot.setBackground("#ffffff")
        
        


if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = GraphDemowWindow()
    win.show()
    sys.exit(app.exec_())

UI界面设计

包含了两个QWidget控件也可以是QGraphicsView控件类型。

两个控件分别提升为pyqtgraph.GraphicsLayoutWidget类型和pyqtgraph.PlotWidget

GraphicsLayoutWidget类型通过addPlot方法添加波形数据,每个波形都占有独立的区域。

plt1 = self.graphicsLayout.addPlot(y=np.random.normal(size=1000), title=“温度”)
plt2 = self.graphicsLayout.addPlot(y=np.random.normal(size=500), title=“湿度”)

PlotWidget类型通过plot方法添加波形数据,同一控件内多个plot占用同一窗口区域。

pen2 = pg.mkPen(color=“F00”, width=1)
plt2 = self.graphPlot.plot(np.random.normal(size=50), pen=pen2, symbolBrush=(0, 255, 0), symbolPen=(255, 0, 0))

控件提升

UI设计文件

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>1139</width>
    <height>844</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <widget class="GraphicsLayoutWidget" name="graphicsLayout" native="true">
    <property name="geometry">
     <rect>
      <x>30</x>
      <y>20</y>
      <width>1091</width>
      <height>361</height>
     </rect>
    </property>
   </widget>
   <widget class="PlotWidget" name="graphPlot" native="true">
    <property name="geometry">
     <rect>
      <x>30</x>
      <y>390</y>
      <width>1091</width>
      <height>411</height>
     </rect>
    </property>
   </widget>
  </widget>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>1139</width>
     <height>26</height>
    </rect>
   </property>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <customwidgets>
  <customwidget>
   <class>GraphicsLayoutWidget</class>
   <extends>QWidget</extends>
   <header location="global">pyqtgraph.h</header>
   <container>1</container>
  </customwidget>
  <customwidget>
   <class>PlotWidget</class>
   <extends>QWidget</extends>
   <header location="global">pyqtgraph.h</header>
   <container>1</container>
  </customwidget>
 </customwidgets>
 <resources/>
 <connections/>
</ui>

UI生成文件

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'd:\project\python\pyqtgraph\PygraphDemo2\demo02.ui'
#
# Created by: PyQt5 UI code generator 5.15.7
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1139, 844)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.graphicsLayout = GraphicsLayoutWidget(self.centralwidget)
        self.graphicsLayout.setGeometry(QtCore.QRect(30, 20, 1091, 361))
        self.graphicsLayout.setObjectName("graphicsLayout")
        self.graphPlot = PlotWidget(self.centralwidget)
        self.graphPlot.setGeometry(QtCore.QRect(30, 390, 1091, 411))
        self.graphPlot.setObjectName("graphPlot")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 1139, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
from pyqtgraph import GraphicsLayoutWidget, PlotWidget

运行效果

到此这篇关于PyQt5使用pyqtgraph绘制波形图的文章就介绍到这了,更多相关PyQt5 pyqtgraph绘制波形图内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: PyQt5使用pyqtgraph绘制波形图

本文链接: https://www.lsjlt.com/news/177700.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PyQt5使用pyqtgraph绘制波形图
    目录主程序代码UI界面设计控件提升UI设计文件UI生成文件运行效果主程序代码 import sys import numpy as np from PyQt5.QtGui impor...
    99+
    2023-01-13
    PyQt5 pyqtgraph绘制波形图 PyQt5 pyqtgraph波形图 PyQt5 pyqtgraph
  • C#Chart绘制简单图形波形
    本文实例为大家分享了C# Chart绘制简单图形波形的具体代码,供大家参考,具体内容如下 此次用C#绘制波形使用的是Chart控件 1、将Chart控件拖进主界面,然后设置属性。 ...
    99+
    2022-11-13
  • 开源波形图绘制工具WaveDromGen
    芯片前端设计经常要描述接口波形行为,传统的绘图工具,如TimeGen,Viso都是收费的,而开源工具WaveDrom需要记住繁琐的编码符号,并且,编码方式对画一些复杂接口时序来说,也是极不友好的,如何更快更方便且免费的画接口波形呢? Wav...
    99+
    2023-09-01
    单片机 fpga开发 嵌入式硬件 Python Tkinter
  • Qt中怎么使用PaintEvent绘制实时波形图
    本文小编为大家详细介绍“Qt中怎么使用PaintEvent绘制实时波形图”,内容详细,步骤清晰,细节处理妥当,希望这篇“Qt中怎么使用PaintEvent绘制实时波形图”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧...
    99+
    2023-06-30
  • wavesurfer.js绘制音频波形图的实现
    1.查看效果图 向前选中: 向后选中: 代码如下(示例): <template> <div class="waveSurfer"> <d...
    99+
    2022-11-12
  • Qt利用QChart实现实时波形图的绘制
    目录前言1.QChart配置以及使用1.1QChart环境配置1.2控件使用1.3代码配置2.QChat设置动态折线图2.1基础数据设置2.2定时器控制数据变动3.实际硬件数据采集图...
    99+
    2022-11-13
  • Qt中PaintEvent绘制实时波形图的实现示例
    目录绘制思路1:接收硬件传入的数据2:定时器动态刷新页面3:真实数据处理第一步:每进行一次数据更新,都需要剔除超时显示数据。第二步:筛查有效数据,并记录4:图形绘制上一篇文章讲述了如...
    99+
    2022-11-13
  • 如何使用Canvas绘制图形图文
    这篇文章主要讲解了“如何使用Canvas绘制图形图文”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Canvas绘制图形图文”吧!HTML5火的正热,...
    99+
    2022-10-19
  • 用Python的绘图库(matplotlib)绘制小波能量谱
    时间小波能量谱 反映信号的小波能量沿时间轴的分布。 由于小波变换具有等距效应,所以有: 式中 表示信号强度,对于式①在平移因子b方向上进行加权积分 式中 代表时间...
    99+
    2022-11-12
  • WPF使用Geometry绘制几何图形
    在WPF的DrawingContext对象中,提供了基本的绘制椭圆和矩形的API:DrawEllipse和DrawRectangle。但是,这些是远远不够用的,我们在日常应用中,更多...
    99+
    2022-11-13
  • 怎么用Canvas绘制图形
    这篇文章主要讲解了“怎么用Canvas绘制图形”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Canvas绘制图形”吧!   Canvas绘制图形 ...
    99+
    2022-10-19
  • 如何使用Python Matplotlib绘制条形图
    目录前言一、一般条形图二、横向条形图三、分组条形图的绘制四、堆叠条形图绘制总结 前言 matplotlib是一个非常强大的Python第三方绘图包,可以绘制非常多非常漂亮的...
    99+
    2022-11-11
  • 怎么使用Python Matplotlib绘制条形图
    今天小编给大家分享一下怎么使用Python Matplotlib绘制条形图的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一...
    99+
    2023-07-02
  • Python怎么使用pyecharts绘制箱形图
    这篇文章主要介绍“Python怎么使用pyecharts绘制箱形图”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python怎么使用pyecharts绘制箱形图”文章能帮助大家解决问题。箱形图概念后...
    99+
    2023-07-02
  • 使用c++实现OpenCV绘制旋转矩形图形
    目录功能函数测试代码测试效果  功能函数 // 绘制旋转矩形 void DrawRotatedRect(cv::Mat mask,const cv::RotatedRe...
    99+
    2022-11-12
  • Android利用Canvas类绘制图形
    本文实例为大家分享了Android利用Canvas类绘制图形的具体代码,供大家参考,具体内容如下 首先介绍一下相关基础知识。 1.画笔(paint) 1.1、作用:画笔对象通过属性来...
    99+
    2022-11-13
  • 如何用python绘制柱形图
    这篇文章主要介绍了如何用python绘制柱形图的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何用python绘制柱形图文章都会有所收获,下面我们一起来看看吧。#柱形图import pandasimp...
    99+
    2023-06-30
  • 使用Python怎么绘制柱状图和条形图
    今天就跟大家聊聊有关使用Python怎么绘制柱状图和条形图,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、实验目的:掌握Python中柱状图、条形图绘图函数的使用利用上述绘图函数实...
    99+
    2023-06-15
  • python使用Matplotlib绘制多种常见图形
    目录柱状图水平绘制柱状图多个柱状图叠加型柱状图散点图气泡图直方图箱线图添加文字描述添加文字描述 方法二多个图形描绘 subplots使用Pandas 绘图Matplotlib官网&n...
    99+
    2022-11-11
  • Python中如何使用Matplotlib库绘制图形
    目录前言一、简单的正弦函数与余弦函数二、进阶版正弦函数与余弦函数1.改变颜色与粗细2.设置图片边界3.设置记号4.设置记号的标签5.设置X,Y轴6.完整代码三、绘制简单的折线图总结前...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作