>>> """
================
Spectrogram Demo
================
Demo of a spectrogram plot (`~.axes.Axes.specgram`).
"""
... import matplotlib.pyplot as plt
... import numpy as np
...
... # Fixing random state for reproducibility
... np.random.seed(19680801)
...
... dt = 0.0005
... t = np.arange(0.0, 20.0, dt)
... s1 = np.sin(2 * np.pi * 100 * t)
... s2 = 2 * np.sin(2 * np.pi * 400 * t)
...
... # create a transient "chirp"
... s2[t <= 10] = s2[12 <= t] = 0
...
... # add some noise into the mix
... nse = 0.01 * np.random.random(size=len(t))
...
... x = s1 + s2 + nse # the signal
... NFFT = 1024 # the length of the windowing segments
... Fs = int(1.0 / dt) # the sampling frequency
...
... fig, (ax1, ax2) = plt.subplots(nrows=2)
... ax1.plot(t, x)
... Pxx, freqs, bins, im = ax2.specgram(x, NFFT=NFFT, Fs=Fs, noverlap=900)
... # The `specgram` method returns 4 objects. They are:
... # - Pxx: the periodogram
... # - freqs: the frequency vector
... # - bins: the centers of the time bins
... # - im: the .image.AxesImage instance representing the data in the plot
... plt.show()
...
... #############################################################################
... #
... # .. admonition:: References
... #
... # The use of the following functions, methods, classes and modules is shown
... # in this example:
... #
... # - `matplotlib.axes.Axes.specgram` / `matplotlib.pyplot.specgram`
...