先看一个简单的小例子:

完整代码:

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.generate_image() def initUI(self):
self.setGeometry(200,200,1000,800)
self.setWindowTitle("实时刷新正余弦波形图")
self.gridLayout = QGridLayout(self)
self.frame = QFrame(self)
self.frame.setFrameShape(QFrame.Panel)
self.frame.setFrameShadow(QFrame.Plain)
self.frame.setLineWidth(2)
self.frame.setStyleSheet("background-color:rgb(0,255,255);")
self.gridLayout.addWidget(self.frame,0,0,1,2)
self.setLayout(self.gridLayout) def generate_image(self):
verticalLayout = QVBoxLayout(self.frame)
win = pg.GraphicsLayoutWidget(self.frame)
verticalLayout.addWidget(win)
p = win.addPlot(title="动态波形图")
p.showGrid(x=True,y=True)
p.setLabel(axis="left",text="Amplitude / V")
p.setLabel(axis="bottom",text="t / s")
p.setTitle("y = sin(x)")
p.addLegend()
# mkpen('y', width=3, style=QtCore.Qt.DashLine)
self.curve1 = p.plot(pen=pg.mkPen("r",width=2),name="y1")  #设置pen 格式
self.Fs = 1024.0 #采样频率
self.N = 1024 #采样点数
self.f0 = 4.0 #信号频率
self.pha = 0 #初始相位
self.t = np.arange(self.N) / self.Fs #时间向量 1*1024的矩阵
self.curve1.setData(self.t, np.sin(8 * np.pi * self.t + self.pha * np.pi / 180.0)) if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec_())

实时刷新正余弦波形的例子

下面举一个复杂一点的例子,这个例子在一个波形图上实时连续刷新两条曲线,分别为正弦曲线和余弦曲线,运行结果的动态图如下:

效果如下:

完整代码:

import numpy as np
import pyqtgraph as pg
import sys
from PyQt5.QtWidgets import QWidget,QApplication,QFrame,QGridLayout,QLabel,QPushButton,QVBoxLayout
from PyQt5.QtCore import Qt,QTimer class Example(QWidget): def __init__(self):
super(Example, self).__init__()
self.initUI()
self.generate_image() def initUI(self):
self.setGeometry(200,200,1000,800)
self.setWindowTitle("实时刷新正余弦波形图")
self.gridLayout = QGridLayout(self)
self.frame = QFrame(self)
self.frame.setFrameShape(QFrame.Panel)
self.frame.setFrameShadow(QFrame.Plain)
self.frame.setLineWidth(2)
self.frame.setStyleSheet("background-color:rgb(0,255,255);")
self.label = QLabel(self)
self.label.setText("正弦函数&余弦函数")
self.label.setAlignment(Qt.AlignCenter)
self.button = QPushButton(self)
self.button.setText("生成波形图")
self.button.clicked.connect(self.btnClick)
self.gridLayout.addWidget(self.frame,0,0,1,2)
self.gridLayout.addWidget(self.label,1,0,1,1)
self.gridLayout.addWidget(self.button,1,1,1,1) self.setLayout(self.gridLayout) def generate_image(self):
verticalLayout = QVBoxLayout(self.frame)
win = pg.GraphicsLayoutWidget(self.frame)
verticalLayout.addWidget(win)
p = win.addPlot(title="动态波形图")
p.showGrid(x=True,y=True)
p.setLabel(axis="left",text="Amplitude / V")
p.setLabel(axis="bottom",text="t / s")
p.setTitle("y1 = sin(x) y2 = cos(x)")
p.addLegend() self.curve1 = p.plot(pen="r",name="y1")
self.curve2 = p.plot(pen="g",name="y2") self.Fs = 1024.0 #采样频率
self.N = 1024 #采样点数
self.f0 = 4.0 #信号频率
self.pha = 0 #初始相位
self.t = np.arange(self.N) / self.Fs #时间向量 1*1024的矩阵 def plotData(self):
self.pha += 10
self.curve1.setData(self.t , np.sin(8 * np.pi * self.t+ self.pha * np.pi/180.0))
self.curve2.setData(self.t , np.cos(8 * np.pi * self.t + self.pha * np.pi/180.0)) def btnClick(self):
self.button.setText("再次点击加速!")
timer = QTimer(self)
timer.timeout.connect(self.plotData)
timer.start(100) if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
ex.show()
sys.exit(app.exec_())

【pyqtgraph绘图】案例-动态的正余弦波形图的更多相关文章

  1. GPU编程shader之正余弦波和幂/指数函数

    先上一个demo代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  2. 正余弦信号的DFT频谱分析

    一般的,对正余弦信号进行採样并DFT运算,画出频谱图,会发现频谱并不干净.这样的现象称为频谱泄漏.由于DFT运算仅仅能是有限序列,突然的截断产生了泄漏. 会有这种特殊情况.当採样截取的刚好是整数个周期 ...

  3. MATLAB实现连续周期信号的频谱分析(正余弦波信号举例)

    关于MATLAB实现连续信号的频谱分析,以正余弦波信号频谱分析为例分析如下: 1.含有频率f ,2f和3f的正弦波叠加信号,即: 其中,f =500Hz.试采用Matlab仿真软件对该信号进行频谱分析 ...

  4. 使用CORDIC算法求解角度正余弦及Verilog实现

    本文是用于记录在了解和学习CORDIC算法期间的收获,以供日后自己及他人参考:并且附上了使用Verilog实现CORDIC算法求解角度的正弦和余弦的代码.简单的testbench测试代码.以及在Mod ...

  5. 【pyqtgraph绘图】如何使用pyqtgraph

    解读官方API-如何使用pyqtgraph 这里有一些使用pyqtgraph的建议方法: 从交互式shell(python -i,ipython等) 从应用程序显示弹出窗口 在PyQt应用程序中嵌入小 ...

  6. Pandas数据处理+Matplotlib绘图案例

    利用pandas对数据进行预处理然后再使用matplotlib对处理后的数据进行数据可视化是数据分析中常用的方法. 第一组例子(星巴克咖啡店) 假如我们现在有这样一组数据:星巴克在全球的咖啡店信息,如 ...

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

    解读官方API-线条,填充和颜色 参考: http://www.pyqtgraph.org/documentation/style.html 线条,填充和颜色 Qt依靠其QColor,QPen和QBr ...

  8. 【pyqtgraph绘图】在pyqtgraph中绘图

    解读pyqtgraph官方API-在pyqtgraph中绘图 参考: http://www.pyqtgraph.org/documentation/plotting.html 在pyqtgraph中绘 ...

  9. MT【34】正余弦的正整数幂次快速表示成正余弦的线性组合

    问题:如何快速把$cos^4xsin^3x$表示成正弦,余弦的线性组合? 分析:利用牛顿二项式展开以下表达式: 再利用欧拉公式$e^{i\theta}=cos\theta+isin\theta$ 比如 ...

随机推荐

  1. 怎么关闭win10和win8快速启动

    电源选项-- 选择电源按钮的功能--- 更改当前不可用的设置-- 快速启动勾去掉

  2. CSS实现响应式全屏背景图

    body { /* 加载背景图 */ background-image: url(images/background-photo.jpg); /* 背景图垂直.水平均居中 */ background- ...

  3. firadisk 把 win7(32位) 装入 VHD :仅仅支持内存模式:--mem

    关键1:对于 win7(32位)来说,还可以在设备管理器内,通过添加“过时”硬件的方式导入wvblk驱动. 附件: grub4dos firadisk驱动

  4. [PHP] 03 - Form & Input

    PHP 完整表单实例 一.表单示范 二.对应代码 <!DOCTYPE HTML> <html> <head> <meta charset="utf- ...

  5. 【GIS】Vue esri-leaflet

    1.npm install esri-leaflet --save 2.引入包 import Leaflet from "leaflet"; var esri = require( ...

  6. Python实现C代码统计工具(四)

    目录 Python实现C代码统计工具(四) 标签: Python 计时 持久化 声明 运行测试环境 一. 自定义计时函数 1.1 整个程序计时 1.2 代码片段计时 1.3 单条语句计时 二. 性能优 ...

  7. 【netcore基础】wwwroot下静态资源文件访问权限控制

    本文参考如下博问 https://q.cnblogs.com/q/107836 业务要求 上传的资源文件(.mp3 .mp4等)只有购买了之后才能有权限访问,所以对上传的资源文件目录进行访问权限控制 ...

  8. django通用视图(类方法)

    这周是我入职的第一周,入职第一天看到嘉兴大佬的项目代码.视图中有类方法,我感到很困惑. 联想到之前北京融360的电话面试,问我有无写过类方法……看来有必要了解下视图的类方法,上网搜了很多,原来这就是所 ...

  9. 【问题集】redis集群set报错(error) MOVED 11469 192.168.181.201:7002

    没有启动集群模式(即缺少了那个"-c"): redis-cli -c -h yourhost -p yourpost

  10. [原]Jenkins(十四)---jenkins示例:admin管理所有项目,新建用户只能看部分项目

    /** * lihaibo * 文章内容都是根据自己工作情况实践得出. *如有错误,请指正 * 版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horiz ...