具有像谱图中的颜色的矩阵的2D图

Bas*_*asj 2 python plot matplotlib spectrogram

如何用Python绘制A[i,j]这样的2D矩阵:

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

有没有Python功能?

(注:我不想,做频谱对我来说,如函数specgram,因为我想计算自己的信号的FFT,因此我只需要绘出一个矩阵颜色的功能)

谱图样本

Bas*_*asj 7

让我们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()
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 'jet'是在问题图像中看到的色彩映射,另请参见这些色彩映射

  • 设置origin='lowest'具有比替换相同的效果np.transpose(Z)np.transpose(Z)[::-1,]

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

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

  • 如果aspect='auto'没有设置,情节将非常薄和非常高(由于4.2对48000!)

  • 使用'imshow`也没有错.最大的区别是栅格与矢量输出.如果您保存为栅格格式,则不会发现差异. (2认同)