import numpy as np
import matplotlib.pyplot as plt

t, x = np.genfromtxt("s.csv", delimiter=";", unpack=True, skip_header=1, dtype=str)

t = np.array([float(val.replace(',', '.')) for val in t])
x = np.array([float(val.replace(',', '.')) for val in x])

fe = 1 / (t[1] - t[0])

N = 100

f = np.fft.rfftfreq(N, 1 / fe)

S = []

for i in range(0, len(x) - N, N // 2):
    X = np.fft.rfft(x[i:i + N])
    S.append(np.abs(X))

S = np.array(S)

tt = []

for i in range(N // 2, len(x) - N // 2, N // 2):
    tt.append(t[i])

tt = np.array(tt)

plt.figure(figsize=(10, 6))
plt.pcolormesh(tt, f, 20 * np.log10(S.T + 1e-12), shading='auto')
plt.ylabel('Fréquence [Hz]')
plt.xlabel('Temps [s]')
plt.title('Spectrogramme')
plt.colorbar(label='Amplitude [dB]')
plt.show()
