我想知道这个特性是否是通过specgram内置的,我相信不是这样的。如果没有,则使用specgram或通过matplotlib实现此功能的最佳方法。如果变换轴的某些变换可以启用该特征。
例如,对于specgram绘图,下面的命令不起作用(任何音频信号都可以作为specgram的第一个参数传递):
fig = figure(11)
ax = fig.add_subplot(111)
ax.specgram(tidig.train_symbol_list[0].audio,Fs=12000)
ax.set_yscale('log')
最佳答案
您可以使用Axes.set_xscale
和Axes.set_yscale
函数更改轴的缩放,这两个函数都接受linear
、log
或symlog
作为输入。因此,改变一个图表有一个日志缩放的X轴,你会做一些类似的事情:
import matplotlib.pyplot as plt
ha = plt.subplot(111)
# Plot your spectrogram here...
ha.set_xscale('log')
编辑这似乎是一个known issue。有一些命令可用于此操作,但不是以任何特别方便的方式(它应该只是
specgram
函数的标志,或者set_xscale
和set_yscale
应该可以工作)。但是,有一种方法可以做到这一点:不要使用
matplotlib.pyplot.specgram
使用matplotlib.mlab.specgram
。这会计算spectragram,但不会绘制它。然后,您可以使用matplotlib.pyplot.pcolor
或类似函数绘制spect图。所以试试这样的方法:import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
# Set up your data here...
Pxx, freq, t = mlab.specgram(x) # Other options, such as NFFT, may be passed
# to `specgram` here.
ha = plt.subplot(111)
ha.pcolor(t, freq, Pxx)
ha.set_xscale('log')
关于python - 在matplotlib中使用频谱图创建对数频率轴频谱图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10812189/