这段时间在研究如何在python中实现展示音频频谱的功能,从deepseek生成的代码中,我发现了Matplotlib这个库,顺藤摸瓜就有了这篇文章,一边学习,一边分享。先来看看最终实现的效果。
利用matplotlib库开发音频频谱实时显示功能本例用到如下库
# 导入核心库
import matplotlib.pyplot as plt# 将图形嵌入GUI界面
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvasfrom matplotlib.figure import Figure# 信号处理函数,用于计算信号的频谱图。
from scipy.signal import spectrogram效果如下

Matplotlib 是 Python 中最经典、使用最广泛的 2D 绘图库,专注于生成高质量的静态、动态或交互式数据可视化图表。以下是其核心功能简介:
核心功能绘图类型丰富:支持线图、散点图、柱状图、直方图、饼图、等高线图、热图、频谱图、3D 图等。
高度可定制:可精细控制图表的所有元素(标题、坐标轴、图例、颜色、字体、网格等)。
多平台支持:生成的图表可保存为 PNG、PDF、SVG 等多种格式,或嵌入 GUI 应用(如 PyQt、Tkinter)和 Jupyter Notebook。
核心组件pyplot 模块,适合快速绘图。
示例1代码如下import matplotlib.pyplot as pltplt.plot([1, 2, 3], [4, 5, 1])plt.show()只需要上面简单的代码,就可以生成如下图形。

3D 绘图:通过 mpl_toolkits.mplot3d 绘制三维曲面、散点等。
图像处理:支持读取、显示和操作图像(如 plt.imshow())。
动画支持:通过 animation 模块创建动态图表。
与科学计算库集成:无缝兼容 NumPy、Pandas 数据结构。
示例2-绘制sin曲线import matplotlib.pyplot as pltimport numpy as np# 生成数据x = np.linspace(0, 2*np.pi, 100)y = np.sin(x)# 绘制图表plt.figure(figsize=(10, 5))plt.plot(x, y, label="sin(x)", color="red", linestyle="--")plt.title("Simple Sine Wave")plt.xlabel("x")plt.ylabel("y")plt.grid(True)plt.legend()plt.show()效果如下

经过初步学习,了解到到Matplotlib 这个库功能确实非常强大,特别在科学计算、信号、图像可视化、数据分析、绘制图表等方面具有强大的优势