用signal.csv
压缩:StreamedResponse
我有这种冲动:
我可以使用np.fft.rfft
为其创建FFT图:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
df = pd.read_csv('signal.csv')
fft = pd.DataFrame(np.abs(np.fft.rfft(df['1']))) #y
n = df['0'].size
unit_freq = 1000000000 #Giga
sample_rate = 10000000000 #10 GS/s
freq_sample_fact = sample_rate/unit_freq
freq = np.fft.rfftfreq(n, 1/freq_sample_fact) #x
fft.index = freq
fft.values[0] = 0
fft.plot(grid = 1,
color = (255/255,0,0),
linewidth = 0.3,
figsize = (10,5),
legend = False,
xlim = [fft.index[0], fft.index[-1]*0.8],
ylim = 0,
xticks = np.arange(0, freq_sample_fact/2 + 0.1, round(freq_sample_fact/2/10, 1)))
plt.xlabel('Frequenz / GHz')
plt.ylabel('Signalstärke')
plt.title('FFT')
plt.show()
如何对数绘制y轴?当我添加
plt.semilogy(fft)
发生这种情况:
我希望y轴以对数表示0到20000的值,以便可以更轻松地比较FFT最大值(例如8000和16000)。我希望我能阐明我的观点。