formula1 / modules /plot.py
kbberendsen's picture
import packages in module
b543474
raw
history blame
1.53 kB
from shiny import module, ui, render, reactive, event, App
import fastf1 as ff1
import numpy as np
# UI
@module.ui
def plot1_ui():
return ui.ouput_plot("gear_1")
# Server
@module.server
def plot1_server():
@reactive.Calc
# Get required data for driver 1 based on selection
def get_data_1():
try:
ui.notification_show("Data takes a couple seconds to load.", duration=3, type = 'default')
f1_session = ff1.get_session(int(input.year()), input.track_select(), input.session_type())
f1_session.load()
# Check if user input == fastest driver
if input.driver1_select() == "Fastest driver":
lap = f1_session.laps.pick_fastest()
else:
laps_driver = f1_session.laps.pick_driver(input.driver1_select())
lap = laps_driver.pick_fastest()
tel = lap.get_telemetry()
driver = lap['Driver']
#converting data to numpy data tables
x = np.array(tel['X'].values)
y = np.array(tel['Y'].values)
points = np.array([x, y]).T.reshape(-1, 1, 2)
segments = np.concatenate([points[:-1], points[1:]], axis=1)
gear = tel['nGear'].to_numpy().astype(float)
lap_time = lap['LapTime']
return segments, gear, driver, lap_time
except Exception:
ui.notification_show("Data not available. Select another track or driver.", duration=10, type = 'error')