"wygładzenie wykresów"

Odpowiedz Nowy wątek
2019-06-05 19:50
0

Cześć
Używam pythona do analizy danych - otrzymuje wykresy w których występują duże wahania i chce je w jakiś sposób wygładzić. Czy w pythonie istnieje taka możliwość? jeśli tak to jak to zrobić? pewnie by trzeba zrobić jakieś aproksymacje lub interpolacje, tylko jak? Z góry dzięki za pomoc!!
Dodam, że używam pakietu pandas, biblioteki matplotlib oraz biblioteki numpy

Pozostało 580 znaków

2019-06-05 20:11
0

Możesz trochę wygładzić same dane, np., zaokrąglić do najbliższych tysięcy, etc. Policzyć mode, mean Coś się więcej Dowiesz, skądś Masz takie dane i takie są, jakieś więcej kontekstu by się przydało.


Pozostało 580 znaków

2019-06-05 20:43
0

używam uśredniania, natomiast i to pozostawia duże wahania.
chodzi o to, że na wykres nanoszę dane z 25 dni w tygodniu i dla każdego dnia mam uśrednione wartości pewnego parametru
wykresy przykładowo wyglądają tak

Pozostało 580 znaków

2019-06-05 21:20
0

No dobra, ale jak chciałbyś żeby wyglądał? Bo "wygładzenie" to dość szerokie pojęcie.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2019-06-05 21:28
0

żeby to była w miarę możliwości gładka linia. tak jak na załączonym obrazku , w którym z 3 oddalonych punktów udało się uzyskać linie gładką. Wydaje mi się ze da się to uzyskac przez aproksymacje ale nie wiem jak to zrobić

  • ww2.PNG (0,02 MB) - ściągnięć: 37

Pozostało 580 znaków

2019-06-05 21:46
0

Chyba chcesz dopasować rzeczywistość do teorii:). To, że wykres tak wygląda mówi coś o eksperymencie, np., o metodach pomiarowych.


Pozostało 580 znaków

2019-06-05 22:00
0

zupełnie nie
ale nawet jeśli tak to widzisz to chcę to zrobić :D jakieś rady?

Pozostało 580 znaków

2019-06-05 22:25
0

No to wygląda że chces zrobić tu tzw regresje, niemniej mam wątpliwości czy cokolwiek sensownego z tego potem wyczytasz.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2019-06-05 22:32
0

Gdyby tak było, to przeszliśmy długą drogę: od narysowania wykresu do regresji:); ale, jak tak to Problem XY w pełnej krasie.


nie rozumiem sarkastycznych wypowiedzi i ich celu - wąż 2019-06-05 22:55
Ty też nie zdradzasz swoich danych, ani ich celu, więc gdybamy. - lion137 2019-06-05 22:56

Pozostało 580 znaków

2019-06-06 00:05
1

Wszystko zależy od zestawu danych oraz efektu jak wspomnieli koledzy wyżej, można się bawić i zaimplementować jakiś matematyczny wzór do zrobienia tego...
Albo skorzystać z google i poszukać czy ktoś już miał z tym problem (jest na tyle pospolity, że szukając w języku angielskim, nie ma z tym problemu ;) ).

titleSposób 1:

import numpy as np
import matplotlib.pyplot as plt

plt.figure()
poly = np.polyfit(list_x,list_y,5)
poly_y = np.poly1d(poly)(list_x)
plt.plot(list_x,poly_y)
plt.plot(list_x,list_y)
plt.show()

titleSposób 2:

from scipy.interpolate import splrep, splev

plt.figure()
bspl = splrep(list_x,list_y,s=5)
bspl_y = splev(list_x,bspl)
plt.plot(list_x,list_y)
plt.plot(list_x,bspl_y)
plt.show()

Cały post do znalezienia tutaj:
https://stackoverflow.com/que[...]smoothing-out-curve-in-python

Do tego co podałeś w grafice, najpewniej się nada :)


Linux Mint
Arduino / Python 3.5.2
edytowany 1x, ostatnio: Guaz, 2019-06-06 00:05
wielkie dzięki za pomoc :) z uśmiechem, bez problemu!! dzięki - wąż 2019-06-06 20:12

Pozostało 580 znaków

2019-06-06 12:21
0

Do Autora: Ale co chcesz osiągnąć? Chcesz określić trend dla posiadanych danych lub dopasować do nich jakiś model? Chcesz przefiltrować dane? Chcesz zdecymować/zinterpolować dane? Jeżeli chodzi o "zwykłe spłaszczenie/wygładzenie danych", to możesz użyć np. filtru Savitzky'ego-Golaya (scipy.signal.savgol_filter).


The quieter you become, the more you are able to hear.
edytowany 1x, ostatnio: Gjorni, 2019-06-07 09:47
dzięki, wypróbuje wspomniany filtr :) - wąż 2019-06-06 20:13

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0