Module rpps.viz.plots.spectrogram

Frequency domain visualizations

Functions

def spectrogram(ax, samp_list, Fs=1, vbw_hz=None)
Expand source code
def spectrogram(ax, samp_list, Fs=1, vbw_hz=None):
    """Plot spectrogram"""
    if ax is None:
        fig, ax = plt.subplot()
    x = freq_axis(len(samp_list[0]), Fs)

    zs = np.zeros((len(samp_list), len(x)))
    z_min = np.inf
    z_max = -np.inf
    for i, samps in enumerate(samp_list):
        zs[i] = utils.psd(window(samps), Fs, vbw_hz)
        z_min = min(np.append(zs[i], z_min))
        z_max = max(np.append(zs[i], z_max))

    ax.set_title("Spectrogram")
    ax.set_xlabel("Frequency")
    ax.set_ylabel("Time")
    ax.imshow(
        zs, aspect="auto", extent=x,
        cmap=colormaps.get("plasma"), shading="nearest",
        vmin=z_min, vmax=z_max
    )

Plot spectrogram