Why plotting the fft result of a signal from -f to f gives different result compared to 0 to f?
Can you advise:

What is the sample interval
What did you use to calculate the spectrum.

Edit 2:
The top one looks right, plotting from 0 Hz to 2*Nyquist. Not sure how
you calculated the spectrum, but this may be the convention
with that package.
If you prefer to present the spetrum from -ve Nyq to +ve Nyq you can't
just plot the same results with new axes.
You will need to recalculate
either with a function which uses that convention, or else do the DFT
yourself, or else you could just move the results above nyquist
and use these for the negative part.
Edit 3:
Nothing wrong, It is just an axis labelling thing.
The way your program has calculated the FFT, the answer is normaly interpreted
as 0Hz to 2*Nyquist.
Or if you prefer you could relabel it from left to right as:
(0-&gt; nyquist), then (-Nyquist &gt; 0)
If you want it to present as (-Nyq &gt; Nyq) you need to rearrange the
answer. (&quot;Roll&quot; the right half of the array across to the left.)