【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.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绘图】案例-动态的正余弦波形图的更多相关文章
- GPU编程shader之正余弦波和幂/指数函数
先上一个demo代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...
- 正余弦信号的DFT频谱分析
一般的,对正余弦信号进行採样并DFT运算,画出频谱图,会发现频谱并不干净.这样的现象称为频谱泄漏.由于DFT运算仅仅能是有限序列,突然的截断产生了泄漏. 会有这种特殊情况.当採样截取的刚好是整数个周期 ...
- MATLAB实现连续周期信号的频谱分析(正余弦波信号举例)
关于MATLAB实现连续信号的频谱分析,以正余弦波信号频谱分析为例分析如下: 1.含有频率f ,2f和3f的正弦波叠加信号,即: 其中,f =500Hz.试采用Matlab仿真软件对该信号进行频谱分析 ...
- 使用CORDIC算法求解角度正余弦及Verilog实现
本文是用于记录在了解和学习CORDIC算法期间的收获,以供日后自己及他人参考:并且附上了使用Verilog实现CORDIC算法求解角度的正弦和余弦的代码.简单的testbench测试代码.以及在Mod ...
- 【pyqtgraph绘图】如何使用pyqtgraph
解读官方API-如何使用pyqtgraph 这里有一些使用pyqtgraph的建议方法: 从交互式shell(python -i,ipython等) 从应用程序显示弹出窗口 在PyQt应用程序中嵌入小 ...
- Pandas数据处理+Matplotlib绘图案例
利用pandas对数据进行预处理然后再使用matplotlib对处理后的数据进行数据可视化是数据分析中常用的方法. 第一组例子(星巴克咖啡店) 假如我们现在有这样一组数据:星巴克在全球的咖啡店信息,如 ...
- 【pyqtgraph绘图】线条,填充和颜色
解读官方API-线条,填充和颜色 参考: http://www.pyqtgraph.org/documentation/style.html 线条,填充和颜色 Qt依靠其QColor,QPen和QBr ...
- 【pyqtgraph绘图】在pyqtgraph中绘图
解读pyqtgraph官方API-在pyqtgraph中绘图 参考: http://www.pyqtgraph.org/documentation/plotting.html 在pyqtgraph中绘 ...
- MT【34】正余弦的正整数幂次快速表示成正余弦的线性组合
问题:如何快速把$cos^4xsin^3x$表示成正弦,余弦的线性组合? 分析:利用牛顿二项式展开以下表达式: 再利用欧拉公式$e^{i\theta}=cos\theta+isin\theta$ 比如 ...
随机推荐
- js 上一步 下一步 操作
<a id="syb" href="#" style="display: block;" class="btn button ...
- 模板, 保存&发布
单击“视图”菜单中的“幻灯片模板”按钮,会弹出“幻灯片母版”选项卡,在此选项卡中,可以修改当前PPT的模板, 例如网上下载的幻灯片上的LOGO都可在这里去除. 模板设计总结 1. 背景可以选择纯色,也 ...
- java对象与map对象相互转换
/** * 使用org.apache.commons.beanutils进行转换 */ class A { public static Object mapToObject(Map<String ...
- 8 -- 深入使用Spring -- 6... Spring的事务
8.6 Spring 的事务 8.6.1 Spring支持的事务策略 8.6.2 使用XML Schema配置事务策略 8.6.3 使用@Transactional 参考1. 啦啦啦 我早就肯定我的身 ...
- KSQL和Flink SQL的比较
Confluent公司于2017年11月宣布KSQL进化到1.0版本,标志着KSQL已经可以被正式用于生产环境.自那时起,整个Kafka发展的重心都偏向于KSQL——这一点可以从Confluent官方 ...
- Linux设备驱动剖析之IIC(二)
953行,适配器的编号大于MAX_ID_MASK是不行的,MAX_ID_MASK是一个宏,展开后的值为61. 957至968行,关于管理小整形ID数的,没怎么了解,略过. 974行,调用i2c_reg ...
- ehcache缓存配置与参数说明
<diskStore path="java.io.tmpdir" /> <defaultCache eternal="false" maxEl ...
- libuv示例代码
https://github.com/nikhilm/uvbook/tree/master/code
- 计算字符串相似度算法—Levenshtein
什么是Levenshtein Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数.许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删 ...
- linux下的文件解压命令
说一下tar命令的参数含义:z,使用gzip解压,x:extract解压,v:显示详细信息,f:使用归档在当前文件夹. 在解压时出现了解压失败,原因是没有sudo,无法创建文件夹.