如何用对数y轴绘制图

时间:2019-10-08 08:25:38

标签: python-3.x matplotlib plot fft logarithm

signal.csv压缩:StreamedResponse

我有这种冲动:

FFT

我可以使用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()

enter image description here

如何对数绘制y轴?当我添加

plt.semilogy(fft)

发生这种情况:

enter image description here

我希望y轴以对数表示0到20000的值,以便可以更轻松地比较FFT最大值(例如8000和16000)。我希望我能阐明我的观点。

0 个答案:

没有答案