Pyside6 / PyQt5 - Matplotlib 开发

简介: Pyside6 / PyQt5 - Matplotlib 开发

Pyside6 / PyQt5 结合 Matplotlib 开发上位机

一、前言

实习需要将电机测试数据进行处理并可视化,需要开发上位机界面。上位机界面依据官网实例进行二次开发。

二、上位机界面

上位机界面如图所示,功能为根据输入 image.png 值绘制高斯曲线图。

三、代码说明

导入 sys, numpy, scipy, matplotlib, Pyside6 等功能包;

import sys

import numpy as np
from scipy.stats import norm
from matplotlib.figure import Figure
from matplotlib.backends.backend_qtagg import FigureCanvas
from matplotlib.backends.backend_qtagg import NavigationToolbar2QT
from PySide6.QtCore import Slot
from PySide6.QtWidgets import (
    QApplication,
    QWidget,
    QDoubleSpinBox,
    QVBoxLayout,
    QHBoxLayout,
)

设计界面及槽函数

class PlotWidget(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)

        #  create widgets 创建窗口
        self.view = FigureCanvas(Figure(figsize=(5, 3)))    # 绘图窗口大小
        self.axes = self.view.figure.subplots()         # 创建坐标轴区域
        self.toolbar = NavigationToolbar2QT(self.view, self)  # 创建绘图工具条
        self.mu_input = QDoubleSpinBox()
        self.std_input = QDoubleSpinBox()
        self.mu_input.setPrefix("μ: ")
        self.std_input.setPrefix("σ: ")
        self.std_input.setValue(10)

        #  Create layout
        input_layout = QHBoxLayout()              # 横向布局
        input_layout.addWidget(self.mu_input)
        input_layout.addWidget(self.std_input)
        vlayout = QVBoxLayout()                 # 纵向布局
        vlayout.addWidget(self.toolbar)
        vlayout.addWidget(self.view)
        vlayout.addLayout(input_layout)
        self.setLayout(vlayout)

        # connect inputs with on_change method
        self.mu_input.valueChanged.connect(self.on_change)
        self.std_input.valueChanged.connect(self.on_change)

        self.on_change()

    @Slot()
    def on_change(self):
        """ Update the plot with the current input values """
        mu = self.mu_input.value()              # 获取输入值
        std = self.std_input.value()

        x = np.linspace(-100, 100)              # 生成坐标
        y = norm.pdf(x, mu, std)

        self.axes.clear()
        self.axes.plot(x, y)                # 绘制二维图
        self.view.draw()

主函数显示界面。

if __name__ == "__main__":

    app = QApplication(sys.argv)
    w = PlotWidget()
    w.show()
    sys.exit(app.exec())

四、结论

可以根据此实例进行二次开发,只需要按照自己的需求进行相应的修改即可。

目录
相关文章
|
Python
PyQt5嵌入matplotlib动画
1 # -*- coding: utf-8 -*- 2 3 import sys 4 from PyQt5 import QtWidgets 5 6 import numpy as np 7 from matplotlib.
1830 0
|
Python
PyQt5 结合 matplotlib 时,如何显示其 NavigationToolbar
本文目的:展示 PyQt5 结合 matplotlib 时,如何显示其 NavigationToolbar。 本人搜遍所有网络无果,没办法,查看PyQt5源代码,最终才搞明白。。。特此留记。   〇、PyQt4 与 PyQt5 导入 NavigationToolbar 时的区别(去掉两个agg) # PyQt4 版本(网传) #from matplotlib.
1201 0
|
2天前
|
数据可视化 Python
Python中的数据可视化:使用Matplotlib绘制图表
【9月更文挑战第11天】在这篇文章中,我们将探索如何使用Python的Matplotlib库来创建各种数据可视化。我们将从基本的折线图开始,然后逐步介绍如何添加更多的功能和样式,以使您的图表更具吸引力和信息量。无论您是数据科学家、分析师还是任何需要将数据转化为视觉形式的专业人士,这篇文章都将为您提供一个坚实的起点。让我们一起潜入数据的海洋,用视觉的力量揭示其背后的故事。
23 16
|
2天前
|
机器学习/深度学习 数据采集 监控
Pandas与Matplotlib:Python中的动态数据可视化
Pandas与Matplotlib:Python中的动态数据可视化
|
15天前
|
数据可视化 物联网 区块链
探索Python中的数据可视化:使用Matplotlib和Seaborn绘制图表探索未来:区块链、物联网与虚拟现实的融合趋势与应用前景
【8月更文挑战第30天】本文旨在引导读者通过Python编程语言,利用Matplotlib和Seaborn库,轻松掌握数据可视化技术。文章以浅显易懂的语言,结合实用的代码示例,从基础的图表绘制到高级定制功能,逐步深入讲解如何在数据分析中运用这些工具。无论你是编程新手还是希望提升可视化技能的开发者,都能在这篇文章中找到有价值的信息,让你的数据“活”起来。
|
15天前
|
机器学习/深度学习 数据可视化 数据挖掘
Python中的数据可视化:使用Matplotlib库绘制图表
【8月更文挑战第30天】数据可视化是数据科学和分析的关键组成部分,它帮助我们以直观的方式理解数据。在Python中,Matplotlib是一个广泛使用的绘图库,提供了丰富的功能来创建各种类型的图表。本文将介绍如何使用Matplotlib库进行数据可视化,包括安装、基本概念、绘制不同类型的图表以及自定义图表样式。我们将通过实际代码示例来演示如何应用这些知识,使读者能够轻松地在自己的项目中实现数据可视化。