Как построить график с логарифмической осью Y - PullRequest
0 голосов
/ 08 октября 2019

Zip с signal.csv: БПФ

У меня есть этот импульс:

enter image description here

Я могусоздайте его БПФ-график с помощью np.fft.rfft:

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

Как я могу построить ось у логарифмически? Когда я добавляю

plt.semilogy(fft)

, это происходит:

enter image description here

Я хочу, чтобы ось y представляла значения от 0 до 20000 логарифмически, поэтомучто максимумы БПФ, например, 8000 и 16000, можно сравнивать друг с другом более удобно. Я надеюсь, что смогу прояснить мою точку зрения.

...