git_baw/tachymeter.py

119 lines
3.4 KiB
Python

import csv, sys
from lib2to3.pgen2.pgen import DFAState
import plotly.express as px
import plotly.io as pio
import plotly.graph_objects as go
import numpy
import pandas
from scipy import signal
filename = 'example_data/TachymeterTable_103.csv'
# einfaches Beispiel: CSV direkt ausgeben:
#with open(filename, newline='') as f:
# reader = csv.reader(f)
# try:
# for row in reader:
# print(row)
# except csv.Error as e:
# sys.exit('file {}, line {}: {}'.format(filename, reader.line_num, e))
class Tachies(object):
"""This class contains lists of values created from csv rows"""
def __init__(self):
self.index = []
self.Time = []
self.x = []
self.y = []
self.z = []
self.d = []
self.deltaT = []
self.SOG = []
self.RelTime = []
self.Beschleunigung = []
self.BeschleunigungDeltaTFix = []
self.ABSBeschleunigung = []
def appendRow(self, i, row, header):
aDict = dict(zip(header, row))
self.index.append(i)
self.Time.append(aDict["Time"])
self.x.append(aDict["x"])
self.y.append(aDict["y"])
self.z.append(aDict["z"])
self.d.append(aDict["d"])
self.deltaT.append(aDict["deltaT"])
self.SOG.append(float(aDict["SOG"]))
self.RelTime.append(aDict["RelTime"])
self.Beschleunigung.append(aDict["Beschleunigung"])
self.BeschleunigungDeltaTFix.append(aDict["BeschleunigungDeltaTFix"])
self.ABSBeschleunigung.append(aDict["ABSBeschleunigung"])
# Time,x,y,z,d,deltaT,SOG,RelTime,Beschleunigung,BeschleunigungDeltaTFix,ABSBeschleunigung
class Tachymeter(object):
def __init__(self, i, Time, x, y, z, d, deltaT, SOG, RelTime, Beschleunigung, BeschleunigungDeltaTFix, ABSBeschleunigung):
self.index = i
self.Time = Time
self.x = x
self.y = y
self.z = z
self.d = d
self.deltaT = deltaT
self.SOG = SOG
self.RelTime = RelTime
self.Beschleunigung = Beschleunigung
self.BeschleunigungDeltaTFix = BeschleunigungDeltaTFix
self.ABSBeschleunigung = ABSBeschleunigung
def __init__(self, row, header):
self.__dict__ = dict(zip(header, row))
self.index = row
data = list(csv.reader(open(filename, newline='')))
# Erzeugung einer Klasse Tachies und Hinzufügen aller Werte
t = Tachies()
i = 0
for d in data[1:]:
t.appendRow(i, d, data[0])
i+=1
# Erzeugung einer Liste von Klassen vom Typ Tachymeter
tachies = [Tachymeter(i, data[0]) for i in data[1:]]
# for tachy in tachies:
# print(tachy.x)
#fig = dict({
# "data": [{"type": "bar",
# "x": [1, 2, 3],
# "y": [1, 3, 2]}],
# "layout": {"title": {"text": "A Figure Specified By Python Dictionary"}}
#})
# pio.show(fig)
# fig = px.line(x=t.index, y=t.SOG, title="SOG")
fig = go.Figure()
fig.add_trace(go.Scatter(x=t.index, y=t.SOG, mode='lines', name='SOG'))
fig.add_trace(go.Scatter(x=t.index, y=signal.savgol_filter(t.SOG, 53, 3), mode='lines', name='Smooth SOG'))
fig.write_html("smooth.html")
fig.show()
#df = dict( {
# "x" : [ 1, 2, 3, 4, 5],
# "y" : [0.4, 2.3, 2.4, 2.7, 1.3]
#})
#fig = go.Figure(go.Line(x = t.index, y = t.SOG, name='SOG'))
#fig.update_layout(title='Apple Share Prices over time (2014)',
# plot_bgcolor='rgb(230, 230,230)',
# showlegend=True)
#fig.show()