Spaces:
Runtime error
Runtime error
File size: 2,420 Bytes
bcf020e bb00581 c46cec1 f94c9eb 5a53c9e c46cec1 5bb732d bf24d8a 04160ad bf24d8a 5a53c9e 04160ad bf24d8a 5bb732d ae21b2a bb00581 64f0dfb a09d793 bb00581 87aae5e bb00581 c46cec1 bb00581 bcf020e 87aae5e c46cec1 e5d2e0d 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 79 80 81 82 83 |
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
from pathlib import Path
try:
script_dir = os.path.dirname(os.path.abspath(__file__))
print(script_dir)
cache_folder = 'cache'
#cache_dir = os.path.join(script_dir, cache_folder)
cache_dir =Path(__file__).parent / "cache"
print(cache_dir)
ff1.Cache.enable_cache(cache_dir)
except:
print('Cache error!!')
app_ui = ui.page_fluid(
ui.div(
ui.input_select(
"track", label="Track",
choices=["Austria", "Hungary", "Spanish Grand Prix"]
),
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) |