Creé una longitud de datos de 4 segundos y tracé su espectrograma. nperseg se especificó como 100. Debido a la longitud de esta ventana, el eje x no comienza desde 0 y finaliza en 4 s. ¿Hay alguna manera de alinear el eje de tiempo del espectrograma con la señal de dominio de tiempo original?
from scipy import signal import matplotlib.pyplot as plt import numpy as np fs = 100 N = 400 time = np.arange(N) / float(fs) y = 500*np.cos(2*np.pi*5*time) f, t, Sxx = signal.spectrogram(y, fs, nperseg = 100) plt.pcolormesh(t, f, Sxx, shading='gouraud') plt.ylabel('Frequency [Hz]') plt.xlabel('Time [sec]') plt.show() plt.plot(time, y) En la siguiente figura se muestra un ejemplo, tanto la señal en el dominio del tiempo como el espectrograma comienzan en 0 y terminan en 1 s. 
Puede trazar como lo hizo y usar xlim para alinear los ejes X.
from scipy import signal import matplotlib.pyplot as plt import numpy as np fs = 100 N = 400 time = np.arange(N) / float(fs) y = 500*np.cos(2*np.pi*5*time**2/2) f, t, Sxx = signal.spectrogram(y, fs, nperseg = 100) plt.subplot(211) plt.pcolormesh(t, f, Sxx, shading='gouraud') plt.ylabel('Frequency [Hz]') plt.xlabel('Time [sec]') xlim = plt.xlim() # save the x limits of the first plot plt.subplot(212) plt.plot(time, y); plt.xlim(xlim) # apply the saved limits to the second plot plt.show()