Just as an illustration, I’m looking for a nice way to plot something like this:

http://labrosa.ee.columbia.edu/matlab/sgram/

I don’t necessarily need a weighting matrix to convert the Pxx array,

which is what Dan Ellis’ code does; I just need to visualize the

spectrogram on a logarithmic axis.

Is there any built-in way to do this?

I’d just like to be able to call specgram(), and then call something like yscale(‘log’, basey=10), to change the y-axis to be logarithmic, stretching or compressing different areas of the image appropriately. The equivalent code would work in MATLAB. However, this doesn’t seem to work with matplotlib (I just get an empty figure).

Similarly, I couldn’t get matplotlib.pyplot.semilogy() to work; I get the warning: “Images are not supported on non-linear axes.”

Does anyone have any ideas?

Thanks!

–David Ho

## ···

On Thu, Apr 15, 2010 at 12:27 PM, David Ho <itsdho@…2722…> wrote:

Hi all!

I have a quick newbie question.

matplotlib’s specgram() by default plots a spectrogram with a linear y-axis (frequency).

However, for many applications, it’s better to look at a log-frequency spectrogram.

Is there an easy way to plot a spectrogram using a logarithmic frequency axis?

Thanks for your help!

–David Ho