Spectrogram from scipy.signal with Python
The input to your spectrogram is too short in terms of time.  To get 2 Hz plot resolution, you need an input vector long enough to represent at least 0.5 seconds (preferably 3X more) worth of samples at your sample rate.