Skip to content

Instantly share code, notes, and snippets.

@yalcinsabancelebi
Last active November 23, 2022 17:43
F1 2022 Season Analysis with Python Fastf1 lib (Learning-by-doing)
import fastf1
fastf1.Cache.enable_cache("../Desktop")
session=fastf1.get_session(2022,'Brazil','R')
session.load(telemetry=False, laps=False, weather=False)
russel=session.get_driver('RUS')
print(russel['FirstName'])
from matplotlib import pyplot as plt
import fastf1.plotting
fastf1.plotting.setup_mpl()
session=fastf1.get_session(2022,'Brazil','R')
session.load()
fast_verstappen=session.laps.pick_driver('RUS').pick_fastest()
verstappen_car_data=fast_verstappen.get_car_data()
time=verstappen_car_data['Time']
speed=verstappen_car_data['Speed']
fig,ax=plt.subplots()
ax.plot(time,speed,label='Fast lap')
ax.set_xlabel('Time')
ax.set_ylabel('Speed [Km/h]')
ax.set_title("Verstappen's fastest lap in Brazil Gp in 2022")
ax.legend()
#############################################################################
rus_lap=session.laps.pick_driver('RUS').pick_fastest()
ham_lap=session.laps.pick_driver('HAM').pick_fastest()
sai_lap=session.laps.pick_driver('SAI').pick_fastest()
rus_tel=rus_lap.get_car_data().add_distance()
ham_tel=ham_lap.get_car_data().add_distance()
sai_tel=sai_lap.get_car_data().add_distance()
mer_color=fastf1.plotting.team_color('MER')
fer_color=fastf1.plotting.team_color('FER')
fig,ax=plt.subplots()
fig.set_size_inches(20,10)
ax.plot(rus_tel['Distance'],rus_tel['Speed'],color=mer_color,label='RUS')
ax.plot(ham_tel['Distance'],ham_tel['Speed'],color=mer_color,label='HAM')
ax.plot(sai_tel['Distance'],sai_tel['Speed'],color=fer_color,label='SAI')
ax.set_xlabel('Meters')
ax.set_ylabel('Speed [Km/h]')
ax.legend()
plt.suptitle("Fastest Lap Comparision Brazil 2022 \n The First Three Driver")
#########################################################################
import fastf1
import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection
from matplotlib import cm
import numpy as np
lap=session.laps.pick_fastest()
tel=lap.get_telemetry()
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)
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']} - {session.event['EventName']} {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))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment