Spaces:
Runtime error
Runtime error
File size: 2,243 Bytes
b8df987 17976c1 b8df987 bcf020e bb00581 c46cec1 5a53c9e c46cec1 fb11f75 17976c1 fb11f75 b8df987 33f3b6b bdf1ad8 b8df987 fb11f75 bb00581 64f0dfb 33f3b6b 38bec10 bb00581 87aae5e bb00581 c46cec1 bb00581 bcf020e e5d2e0d 0054bfa c46cec1 0054bfa bb00581 c46cec1 bb00581 c46cec1 bb00581 e1e02bd c46cec1 bcf020e b3344b3 87aae5e e1e02bd 87aae5e bb00581 c46cec1 bb00581 c46cec1 87aae5e 0054bfa 87aae5e c46cec1 bb00581 bcf020e e1e02bd 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 |
import os
os.environ['MPLCONFIGDIR'] = os.getcwd() + "/configs"
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
from pathlib import Path
# Create a Path object for the folder
cache_path = os.getcwd() + "/cache"
ff1.Cache.enable_cache(cache_path)
ff1.Cache.offline_mode(enabled=False)
print(f"Cache path: {cache_path}")
app_ui = ui.page_fluid(
ui.div(
ui.input_select(
"track", label="Track",
choices=["Austria", "Hungary", "Spain", "Bahrain"],
selected = "Austria"
),
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 segments, gear
@output
@render.plot
def gear():
segments, gear = get_data()
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))
plt
app = App(app_ui, server) |