Spaces:
Runtime error
Runtime error
File size: 2,181 Bytes
bcf020e bb00581 c46cec1 f94c9eb c46cec1 5bb732d 4aeb802 5bb732d 87aae5e bb00581 64f0dfb bb00581 87aae5e bb00581 c46cec1 bb00581 bcf020e 87aae5e c46cec1 0054bfa c46cec1 0054bfa bb00581 c46cec1 bb00581 c46cec1 bb00581 87aae5e c46cec1 bcf020e b3344b3 87aae5e bb00581 c46cec1 bb00581 c46cec1 87aae5e 0054bfa 87aae5e c46cec1 bb00581 bcf020e ed4ba7d 0d0ff81 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
from shiny import App, ui, render, reactive
from shinywidgets import output_widget, render_widget
import fastf1 as ff1
import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection
from matplotlib import cm
import numpy as np
import os
try:
cache_dir = os.path.exists("cache")
ff1.Cache.enable_cache("cache")
except:
print('Cache error!!')
app_ui = ui.page_fluid(
ui.div(
ui.input_select(
"track", label="Track",
choices=["Austria", "Hungary"]
),
class_="d-flex gap-3"
),
ui.output_plot("gear")
)
def server(input, output, session):
@reactive.Calc
def get_data():
f1_session = ff1.get_session(2023, input.track, 'R')
f1_session.load()
lap = f1_session.laps.pick_fastest()
tel = lap.get_telemetry()
#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)
return lap, tel, x, y, points, segments, gear
@output
@render.plot
def gear():
lap = get_data().lap
tel = get_data().tel
points = get_data().points
segments = get_data().segments
cmap = cm.get_cmap('Paired')
lc_comp = LineCollection(segments, norm=plt.Normalize(1, cmap.N+1), cmap=cmap)
lc_comp.set_array(gear)
lc_comp.set_linewidth(4)
plt.gca().add_collection(lc_comp)
plt.axis('equal')
plt.tick_params(labelleft=False, left=False, labelbottom=False, bottom=False)
##title = plt.suptitle(
## f"Fastest Lap Gear Shift Visualization\n"
## f"{lap['Driver']} - {f1_session.event['EventName']} {f1_session.event.year}"
## )
cbar = plt.colorbar(mappable=lc_comp, label="Gear", boundaries=np.arange(1, 10))
cbar.set_ticks(np.arange(1.5, 9.5))
cbar.set_ticklabels(np.arange(1, 9))
return plt
app = App(app_ui, server) |