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

时间:2013-11-19 10:54:36

标签: python matplotlib plot spectrogram

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

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

是否有Python功能?

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

Spectrogram sample

1 个答案:

答案 0 :(得分:6)

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,]

  • 效果相同
  • vminvmax给出比例(此处示例中为0到-100 dB)

  • extent给出x轴(此处为0至4.2秒)和y轴(0至48000 Hz)的限制(在此示例中,我绘制的是4.2秒的频谱图)样本率96Khz的长音频文件

  • 如果未设置aspect='auto',则情节将非常薄且非常高(由于4.2与48000相比!)