先看一个简单的小例子:

完整代码:

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. js 上一步 下一步 操作

    <a id="syb" href="#" style="display: block;" class="btn button ...

  2. 模板, 保存&发布

    单击“视图”菜单中的“幻灯片模板”按钮,会弹出“幻灯片母版”选项卡,在此选项卡中,可以修改当前PPT的模板, 例如网上下载的幻灯片上的LOGO都可在这里去除. 模板设计总结 1. 背景可以选择纯色,也 ...

  3. java对象与map对象相互转换

    /** * 使用org.apache.commons.beanutils进行转换 */ class A { public static Object mapToObject(Map<String ...

  4. 8 -- 深入使用Spring -- 6... Spring的事务

    8.6 Spring 的事务 8.6.1 Spring支持的事务策略 8.6.2 使用XML Schema配置事务策略 8.6.3 使用@Transactional 参考1. 啦啦啦 我早就肯定我的身 ...

  5. KSQL和Flink SQL的比较

    Confluent公司于2017年11月宣布KSQL进化到1.0版本,标志着KSQL已经可以被正式用于生产环境.自那时起,整个Kafka发展的重心都偏向于KSQL——这一点可以从Confluent官方 ...

  6. Linux设备驱动剖析之IIC(二)

    953行,适配器的编号大于MAX_ID_MASK是不行的,MAX_ID_MASK是一个宏,展开后的值为61. 957至968行,关于管理小整形ID数的,没怎么了解,略过. 974行,调用i2c_reg ...

  7. ehcache缓存配置与参数说明

    <diskStore path="java.io.tmpdir" /> <defaultCache eternal="false" maxEl ...

  8. libuv示例代码

    https://github.com/nikhilm/uvbook/tree/master/code

  9. 计算字符串相似度算法—Levenshtein

    什么是Levenshtein Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数.许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删 ...

  10. linux下的文件解压命令

    说一下tar命令的参数含义:z,使用gzip解压,x:extract解压,v:显示详细信息,f:使用归档在当前文件夹. 在解压时出现了解压失败,原因是没有sudo,无法创建文件夹.