Spectrogram of a single tone complex signal has two dark lines?
Since this is a constant spectrogram, you could just as well have just averaged the |FFT|² and plotted that! (The most colorful way of visualizing things isn't always the optimal one; your signal doesn't change over time, so you don't need the time axis of the spectrogram at all.)
Quite possibly, in that &quot;easier&quot; representation, you would have spotted this:
Your spectrogram does FFTs of length 512. That's not a multiple of the period of your discrete complex sinusoid.
Therefore you'll see leakage. (You already know that effect!)
However, to reduce that resolution-reducing leakage effect, specgram applies a Hanning window by default to your 512-sample chunks that you FFT.
That hanning window leads to zeros:
plt.plot(20*np.log10(np.abs(np.fft.fft(fc1[:512]*np.hanning(512)))))


And there you go!