wxpython绘制音频效果


Posted in Python onNovember 18, 2019

本文实例为大家分享了wxpython绘制音频的具体代码,供大家参考,具体内容如下

#-*- coding: utf-8 -*-
 
################################################################################
## 使用wxPython的绘图模块wxPyPlot,需要数据可视化的时候,无需再借用其他的库或模块了
################################################################################
import numpy as np
import wx
import wx.lib.plot as wxPyPlot # 导入绘图模块,并命名为wxPyPlot
import wave
import pylab as pl
# 需要把数据封装进入MyDataObject中
def MyDataObject():
 # 50 个点的sin函数,用蓝色圆点表示
 data1 = 2.*np.pi*np.arange(100)/100.
 data1.shape = (50, 2)
 data1[:, 1] = np.sin(data1[:, 0])
 print ("debug:", data1.shape)
 markers = wxPyPlot.PolyMarker(data1, legend='Green Markers', colour='blue', marker='circle', size=1)
 # 50个点的cos函数,用红色表示
 data2 = 2.*np.pi*np.arange(100)/100.
 data2.shape = (50, 2)
 print ("debug: data2", len(data2))
 data2[:, 1] = np.cos(data2[:, 0])
 lines = wxPyPlot.PolySpline(data2, legend='Red Line', colour='red')
 GraphTitle = "Plot Data(Sin and Cos)"
 
 return wxPyPlot.PlotGraphics([markers, lines], GraphTitle, "X Axis", "Y Axis")
# 解析wav数据
def MyWavData(wav_filename=""):
 print('working')
 # 打开wav文档
 file = wave.open("mic4.wav", "r")
 # 读取格式信息
 # (nchannels, sampwidth,framerate, nframes, comptype, compname)
 params = file.getparams()
 nchannels, sampwidth, framerate, nframes = params[:4]
 print (nchannels, sampwidth, framerate, nframes)
 # 读取波形数据
 str_data = file.readframes(nframes)
 # 文件使用完毕,关闭文件
 file.close()
 # 将波形数据装换成数组
 wave_data = np.fromstring(str_data, dtype=np.short)
 wave_data.shape = (-1, 2)
 wave_data = wave_data.T # 矩阵转置
 time = np.arange(0, nframes) * (1.0 / framerate)
 # print ("debug: time:", len(time))
 # print ("debug: wave_data:", len(wave_data[0][0:len(time)]))
 # print ("debug: time:", time)
 # print ("debug: wave:", wave_data)
 time_and_wav = np.asarray([time, wave_data[0][0:len(time)]]).T
 print ("debug: len of time and wav: ", len(time_and_wav))
 print ("debug: time and wav: ", time_and_wav.shape)
 lines = wxPyPlot.PolySpline(time_and_wav, legend='Blue Line', colour='blue')
 GraphTitle = "the freq of wav file"
 return wxPyPlot.PlotGraphics([lines, ], GraphTitle, "time/s", "fre/Hz")
class TestFrame1(wx.Frame):
 def __init__(self, parent=None, id=wx.ID_ANY, title="Using wxPyPlot"):
  wx.Frame.__init__(self, parent, id, title, size=(800, 600))
  # 创建菜单栏
  self.mainmenu = wx.MenuBar()
  # 创建菜单
  menu = wx.Menu()
  menu.Append(100, 'Draw1', 'Draw plots1')
  self.Bind(wx.EVT_MENU, self.OnPlotDraw1, id=100)
  menu.Append(200, 'Draw_wav', 'Draw wav')
  self.Bind(wx.EVT_MENU, self.OnPlotDraw_wav, id=200)
  # 添加菜单到菜单栏
  self.mainmenu.Append(menu, '&Plot')
  # 设置菜单Bar
  self.SetMenuBar(self.mainmenu)
  # 创建状态栏,显示信息
  self.CreateStatusBar(2)
  self.pc = wxPyPlot.PlotCanvas(self) # 此处导入绘图面板
 
 def OnPlotDraw1(self, event):    # 绘图函数
  self.pc.Draw(MyDataObject())
 def OnPlotDraw_wav(self, event):
  self.pc.Draw(MyWavData())
def main():
 app = wx.App()
 # MyWavData()
 tf = TestFrame1()
 tf.Show()
 app.MainLoop()
# 测试wxPyPlot的代码
if __name__ == '__main__':
 main()

wxpython绘制音频效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
linux下安装easy_install的方法
Feb 10 Python
Python实现生成随机数据插入mysql数据库的方法
Dec 25 Python
Python OpenCV 直方图的计算与显示的方法示例
Feb 08 Python
Python 3.x 安装opencv+opencv_contrib的操作方法
Apr 02 Python
解决Python pandas df 写入excel 出现的问题
Jul 04 Python
python 多线程将大文件分开下载后在合并的实例
Nov 09 Python
对Django的restful用法详解(自带的增删改查)
Aug 28 Python
Python的几种主动结束程序方式
Nov 22 Python
浅析Django 接收所有文件,前端展示文件(包括视频,文件,图片)ajax请求
Mar 09 Python
浅谈在JupyterNotebook下导入自己的模块的问题
Apr 16 Python
python读取excel数据绘制简单曲线图的完整步骤记录
Oct 30 Python
Python干货实战之八音符酱小游戏全过程详解
Oct 24 Python
python导入不同目录下的自定义模块过程解析
Nov 18 #Python
解决django model修改添加字段报错的问题
Nov 18 #Python
python sorted方法和列表使用解析
Nov 18 #Python
在Django中实现添加user到group并查看
Nov 18 #Python
Django继承自带user表并重写的例子
Nov 18 #Python
Django自定义用户表+自定义admin后台中的字段实例
Nov 18 #Python
Django 实现Admin自动填充当前用户的示例代码
Nov 18 #Python
You might like
php二维数组排序详解
2013/11/06 PHP
php 邮件发送问题解决
2014/03/22 PHP
php通过前序遍历树实现无需递归的无限极分类
2015/07/10 PHP
thinkphp项目如何自定义微信分享描述内容
2017/02/20 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
图片自动缩小 点击放大
2008/07/07 Javascript
JavaScript 异步方法队列链实现代码分析
2010/06/05 Javascript
Jquery easyui 下loaing效果示例代码
2013/08/12 Javascript
js 获取本地文件及目录的方法(推荐)
2016/11/10 Javascript
详解js中call与apply关键字的作用
2016/11/21 Javascript
JS Select下拉框(支持输入模糊查询)
2017/02/04 Javascript
Angular.js实现动态加载组件详解
2017/05/28 Javascript
详解如何使用webpack打包JS
2018/06/21 Javascript
Vue弹出菜单功能的实现代码
2018/09/12 Javascript
一个小时快速搭建微信小程序的方法步骤
2019/04/15 Javascript
打印出python 当前全局变量和入口参数的所有属性
2009/07/01 Python
python按照多个字符对字符串进行分割的方法
2015/03/17 Python
详解Python中 __get__和__getattr__和__getattribute__的区别
2016/06/16 Python
Pandas之drop_duplicates:去除重复项方法
2018/04/18 Python
解决matplotlib库show()方法不显示图片的问题
2018/05/24 Python
Python后台管理员管理前台会员信息的讲解
2019/01/28 Python
代码详解django中数据库设置
2019/01/28 Python
Python中print和return的作用及区别解析
2019/05/05 Python
Python爬虫 urllib2的使用方法详解
2019/09/23 Python
python 实现list或string按指定分段
2019/12/25 Python
Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
2020/01/25 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
2020/02/09 Python
详解FireFox下Canvas使用图像合成绘制SVG的Bug
2019/07/10 HTML / CSS
新闻网站实习自我鉴定
2013/09/25 职场文书
应付会计岗位职责
2013/12/12 职场文书
中华魂演讲稿
2014/05/13 职场文书
环保倡议书500字
2014/05/15 职场文书
财务助理岗位职责范本
2014/10/09 职场文书
3.15消费者权益日活动总结
2015/02/09 职场文书
2019年共青团工作条例最新版
2019/11/12 职场文书
一篇文章告诉你如何实现Vue前端分页和后端分页
2022/02/18 Vue.js