3

如何使用 Python 绘制A[i,j]这样的二维矩阵:

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

有没有一个 Python 函数呢?

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

频谱图样本

4

1 回答 1

8

让我们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'是在问题图像中看到的颜色图,另请参阅这些颜色图

  • 设置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 vs. 48000 !)

于 2013-11-19T16:46:33.367 回答