【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$ 比如 ...
随机推荐
- Java编程的逻辑 (81) - 并发同步协作工具
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...
- 错误:OSError: [Errno 1] Operation not permitted: 'lib/python/six-1.4.1-py2.7.egg-info'
解决办法: $ $ pip install mock --ignore-installed six --user 问题:安装mock时报错: (venv)➜ test git:(master) pip ...
- (个人)Zookeeper集群环境部署
一.准备工作 1. 下载zookeeper,下载地址:https://zookeeper.apache.org/releases.html#download 2. 下载CentOS7的镜像,下载地址 ...
- laravel5.4中验证与错误提示设置
1.对于交互提交数据,验证如: #验证 $this->validate(\request(),[ 'title' => 'required|string|min:3|max:20', 'c ...
- tensflow自定义损失函数
tensflow 不仅支持经典的损失函数,还可以优化任意的自定义损失函数. 预测商品销量时,如果预测值比真实销量大,商家损失的是生产商品的成本:如果预测值比真实值小,损失的则是商品的利润. 比如如果一 ...
- Make ProgressBar Vertical
Create a drawable in your Drawable folder called vertical_progress_bar.xml: <?xml version="1 ...
- 移动端html的overflow:hidden属性失效问题
这第一次做手机端网页,在交付测试的时候发现一个问题, 就是body的宽度,我设置了overflow:hidden,在谷歌调试的时候确实是不能滑动的,但是在手机端测试的时候发现,overflow:hid ...
- Git-简单的利用SourceTree提交代码
解决办法: 小编也是新手,所以在使用SourceTree上面花了不少时间,好在简单的拉去远程代码,同步本地仓库代码搞定了.下面是步骤: 1.我们先去下载一个SourceTree然后打开. 2.下一步, ...
- git diff命令详解
1 如下命令: [devel@localhost pontus]$ git diff webserver/web_pontus/app_api/v0/urls.py# 显示如下: diff --git ...
- 跳石头|河中跳房子|NOIP2015提高组T4|二分法
喵 提交地址:http://codevs.cn/problem/4768/ 题目: 题意:自己看 思路: 1.读入各个石头数据 2.直接二分答案: 枚举一个石头i和一个石头j,要求i和j之间的距离为m ...