Как сделать так, чтобы шумовой сигнал выглядел гладко в matplotlib? - PullRequest
0 голосов
/ 22 июня 2019

Итак, у меня есть этот сигнал с зазубринами, мне интересно, есть ли какой-нибудь параметр в matplotlib, чтобы сделать его график более плавным. Я видел, что на TensorBoard есть ползунок для управления плавностью графиков случайных кривых неровностей.

enter image description here

PS: я хочу простой трюк с кодом, а не причудливую технику обработки сигналов.

Ответы [ 2 ]

2 голосов
/ 22 июня 2019

Вы можете использовать панд для легкой фильтрации ваших данных, например:

    import numpy as np

    elements = 100
    noise = np.random.normal(0,10,elements)
    signal = []
    for i in range(elements):
        signal.append(i+noise[i])

    import pandas as pd

    #if you run jupyter-notebook
    %matplotlib inline
    #load data into pandas
    series = pd.Series(signal)
    series.plot()

    #you can filter with rolling mean / median, etc in a window of 5 like:
    filtered_mean = series.rolling(5).mean()
    filtered_mean.plot()

    filtered_median = series.rolling(5).median()
    filtered_median.plot()

примечание: панды могут строить графики непосредственно с помощью matplotlib, если вы начнете работать с сериями / фреймами данных панд. Это может сделать вашу жизнь проще.

1 голос
/ 22 июня 2019

Мне известны только линейные тренды с python (с функцией seborn regplot).

Для чего-то более сложного вам понадобится немного обработки сигналов. Например, вы можете сделать:

import numpy as np
import matplotlib.pyplot as plt

degree = 10
# Let's say you need a trend line for the points (x,y)
z = np.polyfit(x, y, degree)
p = np.poly1d(z)

plt.plot(x,y,'b')
plt.plot(x,p(x),'r')

plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...