在 Pylab 中,该specgram()
函数为给定的幅度列表创建频谱图,并自动为频谱图创建一个窗口。
我想生成频谱图(瞬时功率由 给出Pxx
),通过在其上运行边缘检测器对其进行修改,然后绘制结果。
(Pxx, freqs, bins, im) = pylab.specgram( self.data, Fs=self.rate, ...... )
问题是,每当我尝试Pxx
使用imshow
or绘制修改后的内容时,都会NonUniformImage
遇到以下错误消息。
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/image.py:336:用户警告:非线性轴不支持图像。warnings.warn("非线性轴不支持图像。")
例如,我正在处理的部分代码如下。
# how many instantaneous spectra did we calculate
(numBins, numSpectra) = Pxx.shape
# how many seconds in entire audio recording
numSeconds = float(self.data.size) / self.rate
ax = fig.add_subplot(212)
im = NonUniformImage(ax, interpolation='bilinear')
x = np.arange(0, numSpectra)
y = np.arange(0, numBins)
z = Pxx
im.set_data(x, y, z)
ax.images.append(im)
ax.set_xlim(0, numSpectra)
ax.set_ylim(0, numBins)
ax.set_yscale('symlog') # see http://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes.set_yscale
ax.set_title('Spectrogram 2')
实际问题
如何使用 matplotlib/pylab 绘制具有对数 y 轴的类图像数据?