python - 矩阵的二维图,颜色类似于频谱图中的颜色

标签 python matplotlib plot spectrogram

如何使用 Python 绘制二维矩阵 A[i,j],如下所示:

  • i 是 x 轴
  • j为y轴
  • A[i,j] 是一个介于 0 和 100 之间的值,必须用颜色绘制(例如:0=蓝色,100=红色)

有 Python 函数吗?

(注意:我不想要一个为我绘制频谱图的函数,例如 specgram ,因为我想自己计算信号的 FFT;因此我只需要一个用颜色绘制矩阵的函数)

Spectrogram sample

最佳答案

Z 成为数组,这是我最终使用的:

plt.imshow(np.transpose(Z), extent=[0,4.2,0,48000], cmap='jet',
           vmin=-100, vmax=0, origin='lowest', aspect='auto')
plt.colorbar()
plt.show()

注意事项:

  • 'jet' 是在问题图像中看到的颜色图,另请参见 these colormaps

  • 设置 origin='lowest' 与将 np.transpose(Z) 替换为 np.transpose(Z)[: :-1,]

  • vmin, vmax 给出比例(示例中为 0 到 -100 dB)

  • extent 给出了 x 轴(这里是 0 到 4.2 秒)和 y 轴(0 到 48000 Hz)的限制(在这个例子中我绘制了频谱图采样率为 96Khz 的 4.2 秒长的音频文件)

  • 如果 aspect='auto' 未设置,绘图将非常薄且非常高(由于 4.2 对 48000!)

关于python - 矩阵的二维图,颜色类似于频谱图中的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20069545/

相关文章:

python-3.x - 属性错误 : module 'matplotlib' has no attribute 'scatter'

r - 如何压缩 R 中的绘图以便与 Sweave 一起使用?

python - Matplotlib 忽略采样数据帧的宽度

r - 在用 R 创建的地理 map 中填充大陆区域

r - 当只有一个绘图具有轴标签时,如何创建多个绘图,每个绘图具有相同的绘图区域大小?

python - 使用 Matplotlib.pyplot 在 python 中绘制条形图

python - 没有错误,但是当我运行它时,它显示白屏

python - Django 中的社交媒体链接

Python:返回两个或多个列表共有的项目

python - Matplotlib:subplot2grid 中图外的颜色条