import tif1
import matplotlib.pyplot as plt
# Setup
tif1.plotting.setup_mpl(color_scheme='fastf1')
# Load session
session = tif1.get_session(2023, 'Italian Grand Prix', 'Q')
# Find fastest speed trap
speed_columns = ['SpeedI1', 'SpeedI2', 'SpeedST', 'SpeedFL']
speed_data = session.laps[speed_columns]
fastest_trap = speed_data.idxmax(axis=1).value_counts().index[0]
# Calculate max speeds by team
team_speeds = session.laps[[fastest_trap, 'Team']].copy()
max_speeds = team_speeds.groupby('Team')[fastest_trap].max().reset_index()
max_speeds.columns = ['Team', 'MaxSpeed']
max_speeds = max_speeds.sort_values('MaxSpeed', ascending=False)
max_speeds['Diff'] = max_speeds['MaxSpeed'] - max_speeds['MaxSpeed'].min()
# Get team colors
team_colors = {team: tif1.plotting.get_team_color(team, session=session)
for team in max_speeds['Team']}
max_speeds['Color'] = max_speeds['Team'].map(team_colors)
# Plot
fig, ax = plt.subplots(figsize=(10, 8))
ax.barh(
y=max_speeds['Team'],
width=max_speeds['Diff'],
color=max_speeds['Color'],
height=0.7
)
# Add labels
for i, (speed, diff) in enumerate(zip(max_speeds['MaxSpeed'], max_speeds['Diff'])):
ax.text(diff + 0.2, i, f"{int(speed)} km/h", va='center',
fontsize=10, fontweight='bold')
ax.set_xlabel('Speed Difference (km/h)', fontsize=11)
ax.set_title(
f"{session.event.year} {session.event['EventName']} - Top Speeds by Team",
fontsize=13, fontweight='bold', pad=20
)
ax.invert_yaxis()
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
plt.tight_layout()
plt.show()